阿里笔试题解(2020.4.17场)

阿里笔试题解(2020.4.17场)题目一题干给定n,构造长度为n的排列,使得满足i<j<ki<j<ki<j<k的ai,aj,aka_i,a_j,a_kai​,aj​,ak​,不出现ak+ai=aj∗2a_k+a_i=a_j*2ak​+ai​=aj​∗2的情况。题解暴力解法得到n=3n=3n=3到n=8n=8n=8部分的答案,观察可知,奇数部分和偶数部之间不会互相干扰(因为当aia_iai…

大家好,又见面了,我是你们的朋友全栈君。

题目一

题干

给定n,构造长度为n的排列,使得满足 i < j < k i<j<k i<j<k a i , a j , a k a_i,a_j,a_k ai,aj,ak,不出现 a k + a i = a j ∗ 2 a_k+a_i=a_j*2 ak+ai=aj2的情况。

题解

暴力解法得到 n = 3 n=3 n=3 n = 8 n=8 n=8部分的答案,观察可知,奇数部分和偶数部之间不会互相干扰(因为当 a i a_i ai a k a_k ak分别为奇数和偶数时,奇数加偶数等于奇数,一定不会有满足 a i + a k = a j ∗ 2 a_i+a_k=a_j*2 ai+ak=aj2 a j a_j aj),故分奇偶用分治法递归构造。

重新写了一下题解:
先暴力做一下,0分,不过用暴力的程序找到了一些性质:若“1 5 3 2 6 4”该排列满足题目中要求的性质,则序列”1 9 5 3 11 7″(第1 5 3 2 6 4个奇数)和序列”2 10 6 4 12 8″(第1 5 3 2 6 4个偶数)均满足题目要求中的性质
稍加思索可以发现,排列中的奇数部分和偶数部分不会互相影响(因为当ai和ak的奇偶性不相同时,ai+ak一定是奇数,一定没有满足条件的aj)。所以构造时可以奇数部分和偶数部分分开构造,然后再拼接在一起。比如上面提到的例子中的序列”1 9 5 3 11 7″和”2 10 6 4 12 8″拼在一起形成的新排列”1 9 5 3 11 7 2 10 6 4 12 8″就是n=12时的答案。
一步一步往下拆分,就是分治的思路。
不懂的地方可以看看代码,再不懂的话可以把代码拷到本地然后把生成的过程输出一下。

满分代码

不放文档格式的了,仅供大家参考,如需文档可以私信/评论。

#include <cstdio>
using namespace std;

const int maxn=int(1e6)+11;
int n;
int a[maxn];

void solve(int l,int r,int mark) {
    if(l==r) {
        if(mark) a[l]=1;
        else a[l]=2;
        return;
    }
    int mid=(l+r)>>1;
    solve(l,mid,1), solve(mid+1,r,0);
    for(int i=l;i<=r;++i)
        a[i]=a[i]*2-mark;
    return;
}

int main() {
    scanf("%d",&n);
    solve(1,n,0);

    int i;
    for(i=1;i<=n;++i) printf("%d ",a[i]/2);
    putchar('\n');
    
    return 0;
}

在这里插入图片描述


题目二

题干

给一个带权环路,随机删一条边,使从a到b的最短路径长度变化的可能性有多大(分数表示)。

题解

放代码看看就行了,应该不需要题解吧。需要讲解一下的评论吧。

满分代码

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142546.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月23日 下午2:40
下一篇 2022年5月23日 下午2:40


相关推荐

  • 5G工作原理详解(解释&图解)

    5G工作原理详解(解释&图解)这一切 要从一个 神奇的公式 说起 就是这个公式 还记得这个公式的 请骄傲地为自己鼓个掌 如果不记得 或是看不懂 也没关系 一个科普 解释一下 就是这个超简单的公式 蕴含了我们无线通信技术的博大精深 无论是往事随风的 1G 2G 3G 还是意气风发的 4G 5G 说来说去 都是在这个数学公式上做文章 有线 无线 通信技术 无论什么黑科技白科技 只分两种 有线

    2026年3月18日
    2
  • HorizontalScrollView 仿真 tabLayout

    HorizontalScrollView 仿真 tabLayout别人微博的网址http://blog.csdn.net/u013835855/article/details/71159888目前滑动指示器最著名的是JakeWarton的ViewpagerIndicator,用别人的东西固然方便,但是也带来很多使用上的疑惑,这篇博客,我们使用HorizontalScrollView自己写一个viewPager指示器。这里首先说一下很多自己写的indi

    2022年7月26日
    16
  • php实现html转图片_php获取word内容

    php实现html转图片_php获取word内容Html转Word目测方法大概有两种:1.直接把html代码写入word以二进制的方式2.通过mnt这个介质生成word方法一(推荐):造了个轮子https://packagist.org/packages/cshaptx4869/html2wordcomposerrequirecshaptx4869/html2word…

    2022年10月12日
    5
  • PDF如何导出成图片,操作教程[通俗易懂]

    PDF如何导出成图片,操作教程[通俗易懂]PDF导出后成为图片,这需要将PDF格式转换成图片格式,想要将PDF文件格式转换成图片要用到PDF转换工具,现在很多PDF转换器都可以实现,我们以其中一家的PDF转换器为例,写一篇操作教程给大家演示一下。PDF转换工具:okfonePDF转换大师官网地址操作过程:1.下载并安装“PDF转换大师”,打开软件2.点击进入【PDF转文件】。3.点击【PDF转图片】,导入PDF文件到软件中。4.设置导出图片的相关参数。输出格式包括:PNG、JPG、PNG、BMP、GIF格式..

    2022年6月5日
    36
  • UART串口通信协议的FPGA实现

    UART串口通信协议的FPGA实现引言 UART 串口通信协议 全称叫做通用异步收发传输器 UniversalAsy Transmitter 通常称作 UART UART 是异步通信 它只需要一根线就可以进行数据的通信 1 基本概念波特率 指每秒传输的 bit 位数 bit 一般波特率都会有 9600 15200 等选项 起始位 先发出一个逻辑 0 信号 表示传输字符的开始 数据位 可以是 5 8 位逻辑 0 或 1 如 ASCII 码 7 位 扩展 BCD 码 8 位 一般情况下都选择 8 位而

    2026年3月18日
    2
  • 1.1音响系统放大器设计

    1.1音响系统放大器设计​⑴了解集成功率放大器内部电路工作原理;​​⑵掌握其外围电路的设计与主要性能参数的测试方法;​​⑶掌握用运放与功率管设计音频功率放大电路的方法;​​(4)掌握运用电路仿真软件进行模拟电路辅助设计的方法;

    2022年5月8日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号