SolutionSet - AGC006

因为一直 surrender 太丢人,我就不写有没有 surrender 了!!!!1

C Rabbit Exercise [*2996]

考虑观察性质,期望可以看成 \(x_i \to \frac 1 2(2x_{i+1}-x_i)+\frac1 2(2x_{i-1}-x_i)\),那么也就是 \(x_i\to x_{i+1}+x_{i-1}-x_i\)

看起来没一点用,没有明显性质了,不如搞一些花的,考虑差分。

原先是 \(x_1,x_2,x_3\),考虑操作 \(2\) 之后会变成什么样子,显然是 \(x_1,x_1+x_3-x_2,x_3\),差分后会变成 \(x_1,x_2-x_1,x_3-x_2\to x_1,x_3-x_2,x_2-x_1\),不言而喻了吧。

由此,差分数组的变换是一个置换,可以使用置换快速幂做到 \(O(n\log k)\)Link

Hint:看起来没有什么性质的时候,可以考虑对原序列做一系列的变换(差分),类似「NOIp2021」方差。

D Median Pyramid Hard [*3054]

二分答案。这是咋看出来的?

考虑二分一个 \(x\) 作为答案,将 \(\ge x\) 的值赋为 \(1\),其余的赋为 \(0\),检验最上面的数是否 \(\ge x\)

可以猜测,如果有一个离中心最近的长度为 \(2\) 的连续段 \(d\),满足这个连续段内元素都相同,那么就可以抢先一步覆盖到中心位置,最上面的数就可以出来了。

不可能存在距离最近的两个异色连续段,这是显然的。

注意需要特判 \(0,1\) 交错的情况,这种情况答案就是第一个值的对应值。

时间复杂度 \(O(n\log n)\)Link

E Rotate 3x3 [*3101]

考虑到一次只能转 \(180\deg\),对于这个角度做考察。

首先,这个角度并不能改变一列上数的种类,也就是说一列上的东西是绑定在一起的,先判掉。

其次,如果我们把列与列上的东西对应一手,如果这一列上下颠倒了就附上负值。

那么一次操作,就等同于交换两个距离为 \(2\) 的元素 \(i,j\),并且把 \(i,j\) 以及中间的 \(k\) 都取负,注意到这个操作不会改变 \(i,j\) 所在位置的奇偶性,而我们附上的权值是一个排列,所以,根据这个先判出奇偶性。

那么我们可以操作划分成四个步骤:排序奇数位置,排序偶数位置,翻转奇数位置,翻转偶数位置,前两个的操作步数是逆序对个数,后面的可以提前算出,只需要比较奇偶性即可。

使用树状数组做到 \(O(n\log n)\)Link

F Blackout [*3530]

震撼,震撼。

首先问题可以抽象成图论问题,给定一张有向图,对于 \(x\to y\to z\),建造 \(z\to x\) 这条边,问最后有多少边。

首先先将每一个弱连通块掏出来处理,我们不妨将上述的链涉及的点进行归类,那么就有 \(\{0\}\to \{1\}\to \{2\}\),注意到这实际上是一个三染色。

考虑三染色的情况,共有三种:

  • 染色发生冲突。

  • 染色成功,但是颜色没用完。

  • 染色成功,三个都用了。

考虑第一种情况,我们认为,这个时候会连出一个完全图,证明如下:

我们此时会认为,至少会存在 \(\{x\}\to \{x\}\),证明是,若此时 \(u_1\to u_2\),同时 \(u_2\to \{1\}\),那么 \(\{1\}\to u_1\),同时 \(u_1\to \{1\}\),所以 \(\{1\}\to \{1\}\)

若此时 \(u\to w\),那么 \(w\to u\),所以 \(u\to u\),可以归纳到上面。

因为 \(\{x\}\to \{x\},\{0\}\to\{1\}\to \{2\}\),所以说可以证明出任意一条边都存在。

考虑第二种情况,这种情况下连链都没得,直接摆烂。

考虑第三种情况,这种情况下答案是 \(c_0c_1+c_1c_2+c_2c_0\),因为这个时候链是会被补全成三元环的,而三元环会增加更多的链。

\(O(n+m)\)Link

posted @ 2022-06-29 16:09  时一月  阅读(45)  评论(0)    收藏  举报