tg 50

又是离谱的错误送走自己的一天
但是\(T3\)灵光乍现直接切穿了
但是\(T1\)想了一半就跑路了
但是\(T4\)都是\(n\sqrt{n}\log n\)
并查集直接穿了,线段树只有可怜\(50pts\)甚至\(20pts\)
\(T2\)是真的神仙\(DP\)这个不假
但是如果\(T4\)白送\(100pts\)这就有点离谱了

不说废话,讲题

T1

二进制下\(1\)的个数不超过\(2\)
这不想个二分图?
事实上不一定是二分图,但是:
事实上如果想到建图连边的话这道题可以切一半了
考虑对于\(x\to y\)的路径
它的含义就是:
(没办法把草稿纸拍下来传上去就很离谱啊)
对于路径上一个点\(t\)
\(s_1\)\(t\)再到\(s_2\)
如果\(\exist s_1 =0\or s_2=0\)
就说明二进制下\(t\)这一位为\(1\)
否则为\(0\)
对于每个数,连边就是\(x\to y\)的无向边

T2

\(f_x\)就是\(x\)为根的子树向上清石子的最大数量
\(s_x=\sum\limits_{i\in son_x} f_i,son_x\)表示\(x\)的儿子集合

\(1.\)一次清扫完全在\(x\)的子树内,但是过\(x\)
这个时候,会有\(2\)个子树上分别减少\(1\),但是\(a_x\)对应只减少\(1\)
对于\(s_x\)的影响就是减少\(2\)
\(2.\)一次清扫要到\(x\)子树外结束
这个时候,\(1\)个子树减少\(1\),对应\(a_x\)也减少\(1\)
对应\(s_x\)的影响就是减少\(1\),但是钦定次数为\(f_x\)
\(3.\)还是在\(x\)子树内,但是不过\(x\)
对于\(x\)没有影响,并且由于递归考虑,这种局面会考虑全
在这里不展开,没有意义

每个过\(a_x\)操作对于\(x\)减少的贡献为\(1\),所以可以过\(a_x\)

综上:
用操作次数列出方程

\[\frac{s_x-f_x}{2}=a_x-f_x \]

得:

\[f_x=2a_x-s_x \]

注意只对非叶节点有效,叶节点直接是\(f_x=a_x\)

随便钦定一个非叶节点(度数大于\(1\))\(DFS\)
出现下列情况无解
\(1.f_x<0\)很显然吧
\(2.max(f_i)>a_x,i\in son_x\)
这个是因为如果你处理\(i\)的子树外必然过\(x\)
如果\(x\)提前没了那你\(i\)子树内也没办法整掉这些操作
\(3.\)对于钦定根节点\(rt,f_{rt}>0\)因为根节点没有子树外

特判\(n=2\)

T3

灵光乍现以后这题就简单了
一个结论
\(sum_{i-1}<a_i\)的时候,中间必然断
证明:image

T4

原题

posted @ 2022-09-24 18:45  2K22  阅读(8)  评论(0)    收藏  举报