Codeforces 950 D. A Leapfrog in the Array】的更多相关文章

http://codeforces.com/contest/950/problem/D 前n/2个格子的奇数下标的数没有参与移动 候n/2个格子的奇数下标的数一定是一路移向偶数下标移 所以还原数的初始位置时,让数沿原来的路线向右移动,到达的第一个奇数下标就是这个数的初始位置 在初始位置a的数是(a+1)/2 现在就剩下了如何还原数向左移的过程 假设数a最后移到了位置x, 在位置x之前有 x/2 个奇数位有数 a移到了x,说明除了前面的数,剩下的数都在x之后 所以位置x之后有n-x/2-1 个数,…
题目链接:A Leapfrog in the Array 题意:给出1-n的n个数,从小到大每隔一个位置放一个数.现在从大到小把数往前移动,每次把最右边的数移动最靠右边的空格处直到n个数都在前n个位置. 题解:从数据的大小就可以看出这题一定是推公式的题,那么假设现在一个数刚刚移动到了x位置,那么这个数之前一定有x/2个数没有移动过,所有这个数后面就有n-x/2个数(这里包括x本身).所以x在移动之前的位置就是x+(n-x/2).所以一直将所要求的x 按 x =  x+(n-x/2)这个公式一直向…
B. A Leapfrog in the Array time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Dima is a beginner programmer. During his working process, he regularly has to repeat the following operation aga…
题目链接:Codeforces 439C Devu and Partitioning of the Array 题目大意:给出n个数,要分成k份,每份有若干个数,可是仅仅须要关注该份的和为奇数还是偶数,要求偶数堆的个数为p. 输出方案. 解题思路:首先先将数组依照奇偶排序.也能够分开储存. 然后先单独分k-p个奇数,然后后面的就将两个奇数当一个偶数分配.分配过程中计算是否满足,比方说奇数是否成对,以及是否分成了k堆. #include <cstdio> #include <cstring…
Codeforces 959D. Mahmoud and Ehab and another array construction task 题意 构造一个任意两个数都互质的序列,使其字典序大等于a序列且最小. 思路 其实这题乱搞就行了.用到了之前HDdalao教我的素因子分解方法,可以快速地对枚举的数进行检测. 我们维护一个当前已填的数的素因子集合以及一个大于1的自然数集合(考虑最坏情况,我们总可以都用素数来构造这个序列.由素数的密度可知,n/ln(n)要大于1e5,所以该自然数集合上限达到2e…
题意:n个数1~n(n<=1e18)依次放在一个数组中,第i个数位置为2i-1,其它地方是空的.现在重复以下操作:将最右边的数放到离其左边最近的空的位置,直到所有数移到前一半的位置中.有q<=200000个询问,问你第i个数最终再哪个位置. 题解:这题被某人秒了,所以估计核心代码量不超过2行,于是XJB找规律,找了三四十分钟A了,不明觉厉. 找规律的方向是按照数据必定是个qlogn的算法,输入一个n,肯定要不断除2,又发现前n/2个数一直不动,又发现貌似后n/2的数有些神秘的间隔.最后XJB写…
题意 : 给出 N 表示有标号 1~N 的 N 个数,然后从下标 1 开始将这 N 个数每隔一位放置一个,直到 N 个数被安排完,现在有一个操作就是每次将数列中最右边的数向离其左边最近的空缺处填上,一直这样子填,直到下标 1~N 被填满,然后现在给出 Q 个询问,每个询问给出一个 X ,你需要回答下标为 X 的位置填放了什么数? 分析 :   初始状态每个数都处于奇数位,且可以根据位置下标得到具体的数是什么,即 num = (pos>>1)  + 1 观察到当最后填充操作完成时,每个奇数位置的…
题意: 现在给你一个n,表示有2*n-1个方格,第奇数方格上会有一个数字 1-n按顺序放.第偶数个方格上是没有数字的.变动规则是排在最后一个位置的数字,移动到它前边最近的空位 . 直到数字之间没有空位.之后有q次询问.每次问你这个位置上的数是多少 题解: 1:  1 2:  1 2 3:  1 3 2 4:  1 3 2 4 5:  1 5 2 4 3 6:  1 4 2 6 3 5 7:  1 6 2 5 3 7 4 8:  1 5 2 7 3 6 4 8 9:  1 9 2 6 3 8 4…
http://codeforces.com/contest/950/problem/C 题意: 给出一个01序列,问能否将这个序列分为若干个0开头0结尾的序列 输出方案 如果有解,几个1能在一个序列就在一个序列 一定可以找到解 因为0可以单独1个序列,1必须要依托于0 2个1如果分开 要4个0,连起来要3个0 暴力的做法就是: 如果当前是0,扫一遍已有序列,如果有1结尾的就把这个0放到那个1的后面 没有以1结尾的序列,新建一个序列 如果当前是1,扫一遍已有序列,如果有0结尾的就把这个1放到那个0…
B. Sort the Array 题目连接: http://codeforces.com/contest/451/problem/B Description Being a programmer, you like arrays a lot. For your birthday, your friends have given you an array a consisting of n distinct integers. Unfortunately, the size of a is to…