Codeforces Round #822 Div.2 A-E 题解
目前还有 F 没有更新,F 大概是要鸽了。
A. Select Three Sticks
直接对 \(a\) 排序,选出来的木棍一定是相邻三项,都往中间靠更优。
B. Bright, Nice, Brilliant
最优方案就是每一行第一个和最后一个为 1,至于证明就是如果剩下有地方为 1 则无法满足这一层往后的每一层亮度相同。
C. Removing Smallest Multiples
考虑从小到大枚举要删掉的数 \(i\),每次我们从小到大枚举其倍数是否必须保留,如果必须保留那么这个数就无用了,单组数据复杂度为调和级数 \(O(n\log n)\)。
D. Slime Escape
下面以往左边走到底为例子。
一直往左边走肯定不行,因为有时我们需要往右边走一下使数字增大,因此每次我们先尽量往左走,一旦走不下去了我们就考虑在中间行进的最大数字时往右边走看看能不能使答案更大,类似双指针。
特别注意,由于可能会有多次往右边走的过程,所以一旦右边走不了就要退出(被困住了),以及右边的数使答案更大之后这些数就不能在遍历了,这样可以做到单组数据 \(O(n)\)。
long long,极小值极大值设的足够小足够大。
E. CF1734E Rectangular Congruence
对原式移项得到取出任意两行,对应位置相减后得到的差分(膜 \(n\) 意义下)是个排列,这是充要条件。
然后整一下这个条件可以得到相邻两行对应位置相减膜 \(n\) 得到的 \(n-1\) 个差分都是 \([0,n-1]\) 的一个类排列,又 \(a_{i,i}=i\),所以可以直接构造。