2023.9.13 AT Practise
ARC078F
使得 \(1\sim n\) 只有一条路径的话,
是这样的:\(1\sim n\) 的路径上挂了若干联通块:联通块内两两连边。
设 \(f_{S,u}\) 表示当前处理了点集 \(S\),现在走到 \(u\),
有两种转移,一种是在这个点上挂一个连通块,其次是把这个点连向下一个点。
\(f_{S,u}+G_T\to f_{S\cup T,u}\).
\(f_{S,u}+E_{u\to v}\to f_{S\cup v,v}\).
我们只需要求出 \(G_S\) 表示 \(S\) 点集内部所有边权即可。
ARC079F
容易发现一个点的权值就是其后继的 \(mex\),对于树来说,可以直接求出。
那么怎么处理环呢?我们可以枚举环上一个点的 \(mex\) 值,转一圈后再回来检验。
但是这样枚举的太多了。其实一个点它的权值是不会超过 \(\log n\) 的。
可以简单证明。
那么就是 \(n\log n\).
ARC080F
首先如果有一个长为 \(x\) 的区间,我们如果要让其全部取反。
若 \(x\) 为奇质数,那么只需操作一次。
若 \(x\) 为偶数,要操作两次:一个不小于 \(6\) 的偶数一定可以分为两个奇质数的和。
但是其对于 \(4\) 和 \(2\) 也成立,因为 \(4=7-3,2=5-3\),这样也可以。
若 \(x\) 为奇非质数,要操作 \(3\) 次,只需减去一个奇质数就变成偶数了。
考虑差分,我们要把这个差分数组全部变为 \(0\)。
令差分数组为 \(1\) 的数两两对应一下,对应 \(l,r\) 就是使长度 \(r-l\) 的区间全部取反。
考虑优先匹配长度为奇质数的区间,按偶数和奇数分成二分图,先全部匹配了。
剩下若干个为被匹配的位置,再把奇偶性相同的匹配了,最后再匹配奇非质数的。
ARC080E
考虑倒过来取。每次选的两个数组成的区间不可以相交。
那么在 \([l,r]\) 选择一个区间 \(x,y\) ,将其分成 \([l,x-1],[x+1,y-1],[y+1,r]\) 三个区间,
每个区间必须是偶数长度,所以 \(x\) 和 \(l\) 同奇偶,\(y\) 与 \(r\) 同奇偶。
建立两颗奇数和偶数的线段树即可。
一开始是在 \([1,n]\) 中去,线段树计算出其字典序最小的选择,并把这个区间拆开,加入堆即可。
每次堆取出字典序最小的区间。
ARC081E
考虑倒过来 dp,设 \(dp_i\) 表示 \(s\) 的 \(i\) 的后缀没有匹配的最小长度的 \(t\)。
考虑第 \(i\) 位,设 \(t\) 的前面加入了一个字符 \(c\).
那么我们要匹配 \(c\),就要找到一个 \(s\) 中的 \(c\) 去匹配,
如果 \(s\) 后面没有 \(c\),那 \(t\) 直接为 \(c\) 即可。
那么我们可以预处理出 \(nxt_{i,j}\) 表示 \(i\) 后面第一个字符 \(j\) 的位置。
转移的话就是枚举 \(c\),然后 \(dp_i=dp_{nxt_{i,c}+1}+1\).
ARC081F
神仙题。
考虑一个 \(2\times 2\) 的矩阵如果满足其能转变为全 \(1\) 的矩阵,
那么一个大的矩阵里面有若干个 \(2\times 2\) 矩阵,若这些矩阵全部都可以变为全 \(1\),
那么这个大矩阵就是可以变成全 \(1\) 的。
那么我们把 \(2\times 2\) 的一个个矩阵都构建一个新矩形代表其能不能变为全 \(1\),
那么变成求最大子矩形。
ARC082E
注意到这个贡献是非常的特殊的。
可以把问题转变为:每个点选或不选,问能否组成凸包的方案数。
注意到不能组成凸包有且仅有这些点是共线的,减去即可。
ARC083E
首先有一个状态是这样的:\(f_{u,c,s}\) 表示 \(u\) 选了 \(c\) ,子树内非 \(c\) 的权值和为 \(s\),能否凑出。
但是这样是 \(O(nX^2)\) 的。
由于每个状态的值是可行或不行,那么考虑把一维的值放到这个状态的答案去。
那么变成 \(f_{u,c}\) 表示 \(u\) 选了 \(c\),\(s\) 的最小值。
转移是迎刃而解。