CF 刷题计划 2
前言
CF 刷题计划
不知不觉离之前的刷题计划都过去半年多了,水平也提升了不少,不得不感叹时间流逝。
快 NOIP 了,感觉学新算法没什么用,就回来刷点CF吧。
那就接着之前的编号,继续吧。
刷题难度区间 \([2100,2300]\)
出发!是时候卷起来了!!!11
CF1316E 2022.11.11
\(*2300\)
先把作为观众的贡献贪心从大到小排序,然后状压 DP,注意设 DP 式的时候要把观众的考虑进去。 \(\Theta(n\log n+n p 2^p)\)
https://codeforces.com/contest/1316/submission/180461189
CF1322B 2022.11.13
\(*2100\)
一位一位考虑。这样只需要考虑这一位为 \(1\) 出现过的次数。
显然分成能进位和不能进位,只需要将更低的位从小到大排序然后二分即可。\(\Theta(n\log n\log a)\)
https://codeforces.com/contest/1322/submission/180739265
CF1322C 2022.11.14
\(*2300\)
考虑两个右半部分的点对答案的贡献。
如果右半部分的这两个点对应的左半部分一样,直接合并。否则在左边选择两个点集合,肯定存在这两个点会出现在不同的的点集或相同的内,由于 \(\gcd(a,b,a+b)=\gcd(a,b)\),所以直接 HASH 一下然后把求合并的点的 \(\gcd\) 即可。 \(\Theta(n\log n+m)\)
https://codeforces.com/contest/1322/submission/180959421
CF1327D 2022.11.16
\(*2200\)
\(k\) 次操作相当于这个点指向环上的第 \(k\) 个点,所以只要枚举环的大小的约数即可。\(\Theta(n\sqrt n)\)
https://codeforces.com/contest/1327/submission/181161455
CF1328F 2022.11.16
\(*2200\)
最后 \(k\) 个一样的数字一定是数组里面的数字,所以直接枚举计算即可,分成从小的加、从大的减或者两个都有。 \(\Theta(n\log n)\)
https://codeforces.com/contest/1328/submission/181170145
CF1332E 2022.11.16
\(*2100\)
\(nm\) 奇数肯定无解,然后显然只需要让所有的加起来是奇数就可以了。设 \([l,R]\) 中 \(a\) 个奇数,\(b\) 个偶数。
答案就是
注意 \((a+b)^{nm}\) 以及 \((a-b)^{nm}\) 的展开形式,不难发现所求即为 \(\dfrac{(a+b)^{nm}-(a-b)^{nm}}{2}\)
\(\Theta(\log nm)\) (直接快速幂) 或者 \(\Theta(\log p)\) (欧拉定理)
https://codeforces.com/contest/1332/submission/181202011
为了方便继续写题的链接:https://codeforces.com/problemset/page/3?tags=2100-2300