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)\) 之间的关系。

\[B(x)=\sum_{i=0}^d a_i(x+s)^i \]

考虑这么两项:\([x^d]B(x)\)\([x^{d-1}]B(x)\)

\[[x^d]B(x)=a_i,[x^{d-1}]B(x)=a_d {d \choose 1} s+a_{d-1} \]

那么现在直接把两个多项式的最后一项插出来就好了。

\[[x^d]F(x)=\sum_{i=0}^d {y_i \over \prod_{j \ne i} (x_i-x_j)} \]

\[[x^{d-1}]F(x)=\sum_{i=0}^d {y_i \over \prod_{j \ne i} (x_i-x_j)} \times \sum_{j \ne i} (-x_j) \]

预处理一下阶乘逆元

Div2 F & Div1 D

对于 \(k \le {n+1\over 2}\) 的情况,发现每一次做 LDRU 可以把第二个挪到第一个。
剩余情况考虑把 \(k\) 挪到 \(n+1\over 2\) 的位置,先把他挪到最后:RDLU 再进行一次 LU 即可。

Div1 E

首先将所有数从大到小进行排序,发现每次把一段前缀变成最小值,剩余的变成最大值。
考虑移动边界 \(i \to i+1\),那么贡献的变化为:

\[D={{a_{i+2}-a_{i+1}} \over 2^{n-(i+1)}} - {{a_{i+1}-a_{i}} \over 2^{i}} \]

\(b_i=a_{i+1}-a_i\) 扩展一下,分解从 \(i \to j\) 的代价为

\[D= -{b_i \over 2^i} + \sum_{k=i+1}^{j-1} ({{1\over 2^{n-k}} - {1\over 2^k} })b_k + {b_j \over 2^{n-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\) 的右端点方案数,这个由基本子串结构的形态决定。

posted @ 2023-08-22 21:01  Matutino_Lux  阅读(19)  评论(0编辑  收藏  举报