codeforces 1109 div3
https://codeforces.com/contest/2244
A. Iskander and Drawings
知识点:贪心
思路:找出最长的一段,除以2向上取整即可
B. Nikita and Books
知识点:思维
思路:因为题目要求严格递增,所以对比最小的严格递增数组(简称对比数组),判断该数组前缀和即可,若前缀和小于对比数组,说明该数组连最低要求也无法达到,输出否,反之若全部大于对比数组,那么输出是
C. Stepan and Permutation
知识点:思维,数学
思路:因为 \(x,y\) 是不变的,且为 \(gcd(x,y)\) 所以每个位置可以交换的位置是固定的,只需要观察每个位置与他正确位置的距离是否为 \(gcd(x,y)\) 的倍数即可
D. Yaroslav and Productivity
知识点:贪心
思路:注意到,若对 \(b\) 数组排序,降序遍历时,操作当前元素只会对 \(b[i+1]+1\) ~ \(b[i]\) 产生影响,我们可以贪心的取这段元素和的绝对值,对于 \(1\) ~ \(b[i+1]\) 的元素,可以通过操作后面的 \(b[i]\) 来进行符号的变化,这样对于每一段元素和,我们都可以取绝对值,而对于无法进行操作的元素,直接累加到答案中即可。
E. Masha and the Garland
知识点:思维,前缀和
思路:若有 \(s[i]==s[i+1]\) 的情况,设 \(a[i]=1\) ,每次进行翻转操作,仅会使得 \(a[l-1]\) 和 \(a[r]\) 变化,取前缀和,若 总数为偶数,那么可得 \(ans=sum/2\),若为奇数,可以令左端点为 \(l\),这样操作只会更改一个 \(a[i]\) 值,所以 \(ans=(sum+1)/2\)。对于每个询问,只需要判断 \(ans\) 和 \(k\) 的关系即可。

浙公网安备 33010602011771号