日记 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\) 询问给定。
posted @ 2023-06-17 00:16  caijianhong  阅读(5)  评论(0编辑  收藏  举报