日记 2023.6.17:2023 syzx 春季训练 11
A
任意两个都不模糊即可,二位数点
还可以异或 hash:对于每条线段,只需要判断在 A/B 内的与它相离的集合是否一样。给每条线段赋随机权值即可。
B(不会)(ok)
计数括号序列,使得对于所有的区间限制,都有这个区间的子串是合法括号序列。
错误:做前缀和,将相等的连起来?
两个区间有交,则交集、两个区间去掉交集这三个都是合法的。两个区间覆盖,小的是,大的减小的也是。
正解:想象每个区间中的位置染色,那么最终颜色集合相同的就是同一个等价类,答案是所有等价类的长度的卡特兰数。异或 hash 染色就是了。
C
2-sat
注意到对称性,甚至并查集
D
2-sat
E(不会)
序列中每个数最多出现四次。将其划分为两个相同的子序列。
对于一个数字,第一次出现的给 0,最后一次出现的给 1,剩下两个有两种选择。故枚举任意两个数字,枚举它们的选择,看一下会不会有冲突。2-sat。
或者这样:如果每个数字出现两次,记为 \((l_i,r_i)\),那么就是有这些区间不能包含,且答案是所有 \(l\) 分一起。
现在每个数字出现四次,将其拆开,认为是两种不同的颜色(\((1,3)+(2,4)\) 或 \((1,2)+(3,4)\) 两种方案可选),用上面的判定。2-sat。
F
树上极差不大于 \(d\) 的联通块计数,2000。
枚举最大值并钦定它被选。可能需要给一些东西钦定顺序。
\(f_u=\prod_v(f_v+1)\)。共 \(O(n)\) 次 DP。
G(不会)(ok)
树上的点有黑白两色,计数所有断边的方法,使得断出的每个联通块只有一个黑点。2000。
\(f(u,0/1)\) 表示以 \(u\) 为根的连通块中,有 0/1 个黑色的方案数,做完。
H
枚举质数 gcd。数一下直径长度。
I
枚举所有路径。第三个点不能在路径上。点分治统计。
J(不会)
一棵树上游走,求遍历完所有叶子的最小代价,操作如下:(\(n\leq 200\))
- 免费回到根或存档点。
- 设置存档点为当前点,覆盖之前的。免费。
- 向下走到儿子,花费边权。
设 \(dp(u)\) 表示在 \(u\) 设置存档点,从根出发走完 \(u\) 的所有叶子的最小代价。
枚举所有儿子 \(v\),将 \(v\) 分为:
- 集合 A 表示这些 \(v\) 我不设置存档点,每次回溯到 \(u\) 到走下去,设 \(f(v)=\sum(u\to leaf)\)
- 集合 B 表示这些 \(v\) 可以设置存档点,但这样就必须回到根。如果将初始的 \(root\to u\) 的并到任意一个 \(v\) 上,那么这部分的代价是 \(dp(v)\)
叶子特判。否则 \(dp(u)=\sum\min(dp(v),g(v))\)。
K(不会)
一棵树(180)。可以选择一些点作为关键点,总花费是 \(\sum d[len]\),其中 \(len\) 是到最近关键点的距离。
最小化代价。除了 \(d[0]\),其它的 \(d\) 单调不降。
因为 \(d\) 单调不降,所以对于每个点,它结算不一定要取最近的,放宽限制为随便选一个结算。对答案无影响。
\(f(u,x)\) 表示 \(u\) 在 \(x\) 处结算,子树中其余点全部结算完成。\(x\) 不一定要在子树内。
L(不会)
一棵树,很多询问:给 \(v,k\),请:
- 删除 \(v\) 子树中的点(不含 \(v\)),删了一个点,它的所有儿子连向父亲。设删了 \(m\) 个点。
- 最大化 \(c-mk\),\(c\) 表示最终 \(v\) 的儿子数,\(k\) 询问给定。
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/17486818.html