首页 > TAG信息列表 > Progressions
D. Progressions Covering_线段树维护差分
线段树维护差分 D. Progressions Covering 题目大意: 数列a原来全是0,可以无限次进行一种操作,每次操作可以选择一段长度为k的区间,对该区间的数字分别对应加上1,2,3,...,k。再给出数列b,问最少操作几次可以使得a数列的每一个数字不小于b数列中的对应数字。 思路和代码: 可以操作题目给Codeforces 571E - Geometric Progressions(数论+阿巴细节题)
Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉此题思维难度不太大,不过大概是细节多得到了精神污染的地步所以才放到 D1E 的罢((( 首先我们对所有 \(a_i,b_i\) 分解质因数并将它们全部质因子拎出来编个号 \(1,2,3,\cdots,m\)——这样的质因子个数肯定不会超过 \(2n\omega(a_i)\)CF710D Two Arithmetic Progressions
原题链接 即求在\([L,R]\)之间有多少个整数\(K\)满足\(K = a_1x + b_1 = a_2y + b_2\),其中\(x,y\)为自然数 很容易想到将等式移项,变为\(a_1x + a_2(-y) = b_2 - b_1\) 那么很明显可以用扩欧来求出一组\(x,y\)的特解,并将特解移至自然数范围内的最小解 因为原式是等式,接下来我们只需Arithmetic Progressions(暴力 hash_map)
题意:给你N个数,求这些数能组成的等差数列的最长的长度。 思路:暴力,每个 a[ i ],当成首项,然后求枚举 a[i+1]-a[i]=d,在来一层for循环,从i+1开始,检查从i+1到N有多少以d为公差的数,这里需要用hash_map标记一下,如果用map的复杂度是O(logn),hash_map的复杂度是O(1)。 #include<bits/