CF1818 & 1817 题解
Div2 A
容易发现最后要存活下来一定要每次和 \(1\) 号做出相同的选择,直接数就好了.
Div2 B
容易发现当 \(n\) 为奇数的时候无解。
考虑 \(n\) 为偶数的情况怎么构造,有一种方案是在 \(a_i=i\) 的基础上调整,交换一下 \(a_{2i-1}\) 和 \(a_{2i}\),证明考虑左右端点的奇偶性。
Div2 C & Div1 A
考虑一段连续的不升子序列,那么这里必须最少删到只剩下两个数,考虑贪心删除,删前面的,这样就转化成数 \([l+2,r]\) 有多少的 \(i\) 使得 \(a_{i-2} \ge a_{i-1}\) 且 \(a_{i-1} \ge a_i\)。
特判一下区间长度小于等于 \(2\)。
Div2 D & Div1 B
考虑从"四度点"作为突破口解题。
对于每个四度点,只要找到一个只经过他两个儿子的环即可。一种方法是把所有的儿子染色然后 bfs,然后只要找到一条连接不同颜色的边即可。
Div2 E & Div1 C
考虑 \(A(x)\) 与 \(B(x)\) 之间的关系。
考虑这么两项:\([x^d]B(x)\) 与 \([x^{d-1}]B(x)\)。
那么现在直接把两个多项式的最后一项插出来就好了。
预处理一下阶乘逆元
Div2 F & Div1 D
对于 \(k \le {n+1\over 2}\) 的情况,发现每一次做 LDRU
可以把第二个挪到第一个。
剩余情况考虑把 \(k\) 挪到 \(n+1\over 2\) 的位置,先把他挪到最后:RDLU
再进行一次 LU
即可。
Div1 E
首先将所有数从大到小进行排序,发现每次把一段前缀变成最小值,剩余的变成最大值。
考虑移动边界 \(i \to i+1\),那么贡献的变化为:
记 \(b_i=a_{i+1}-a_i\) 扩展一下,分解从 \(i \to j\) 的代价为
考虑中间那个和式的贡献,\(i,j \le {n \over 2}\) 时贡献为负,此时若 \(j\) 过于靠近 \(n \over 2\) 那么一定比 \(1\) 更劣,具体来说就是取前 \(\log\) 个 \(b_i\) 不为 \(0\) 的位置。\(j\) 更大情况也是如此,检查最后 \(\log\) 个。
Div1 F
原本 SAM 直接做还有些困难,但是用基本子串结构就很容易了!
建出来,然后考虑一个等价类怎么统计答案,发现枚举 \(b\) 的左端点位置,那么 \(a\) 的 endpos
一定在其左边,可以直接前缀和查,再考虑 \(b\) 的右端点方案数,这个由基本子串结构的形态决定。