6月CF杂题
已经 18 号了捏。
Educational Codeforces Round 150 (Rated for Div. 2)
E. Fill the Matrix
比较傻逼,但是是 E,所以写一下。
显然最优是横着填一段形如 \(x,x+1,x+2\ldots\) 的数,那么如果一段长度为 \(l\) 则贡献为 \(l-1\),所以我们要尽量填进长的段里。
现在问题就变成了维护每种长度的段有多少。可以从下往上枚举每一列黑白交界点的位置,把这个看成动态分割区间的过程,set 线段树乱搞就行。
Codeforces Round 879 (Div. 2)
CF1834E. MEX of LCM
还是那个性质:当你拓展的时候,区间 \(\text{lcm}\) 要么不变,要么至少变大一倍。第 \(3\times 10^5\) 个质数是 4256233,故我们只需要不超过 4256234 的数。
我的写法很劣,不知道为什么过不了,所以下面是 emsger 的写法。假设当前枚举到 \(a_i\),考虑开一个双端队列维护以 \(i\) 为右端点的所有可能的 \(\text{lcm}\),同时每次把能得到的数丢进 map 里,最后求 mex 即可。优化就是如果这个双端队列是 \([i,i],[i-1,i]\ldots[1,i]\) 的顺序的话,那么这些 \(\text{lcm}\) 是不减的,且一定是倍数关系。如果当前已经超过答案上限/能被 \(a_i\) 整除,说明也不用看后面的了。这似乎在 \(a_i\) 很小时有巨大优化。