50分-rank28 我是第二机房垫底大垃圾。
赛时T1和T2其实想到了正解??安慰自己罢了。
真正的CSP-S的赛后你还能和主办方争论说自己其实想到了正解要求人家硬给你个省一不成??
出题人不知道到底有多痛恨人类。
T1数据是有向无环DAG,题面不给,题解才说?
T2明明答案字符串唯一却非得写一个字典序最小来骗我这个大垃圾?
T3明明是个sb树形dp非得加一个输出小数点后3位来骗我这个大垃圾?
哭死。
T1赛时想到了AC解法之一的bitset优化暴力。然而不会空间复杂度的证明就换打了一个50分非完美算法??我去死算了。
T2想到了倒序还原但是发现要求输出字典序最小就放弃了改写一个最后都没有调出来的$O(2^len)$的sbdfs??
T3看到概率与期望而且最后没有时间了直接弃掉??
我真是失败啊。
没别的说的。赛时状态又炸了。在T2dfs久久调不出来的时候炸了。
其实静下心来30分还是可以拿到的吧。
还是实力不行啊。%%%侯神AK。
这样下去可不行啊QAQ。
不絮叨了。放题解。
T1 attack
(题干并没有给出数据是有向无环DAG的任何提示。
赛时随便xjb码了个tarjan缩点然后一顿疯狂特判,50分滚粗。)
50%算法(把自己赛时的sb解法记录下)
tarjan强连通分量缩点,(事实证明没有用到。因为没有有环的数据)
然后跑一遍dfs统计答案。
100%算法1
wba大神说是支配树裸题。
在原图之外建一棵支配树就好了。答案就是读入的所有点在支配树上lca的深度。
100%算法2
bitset优化暴搜。50000貌似会炸空间。开一半就好了。
T2 reverse
(题目中那个输出字典序最小的要求是骗人的……)
可以发现倒序还原时的状态固定:若末尾为'A'则必定删掉A,若末尾为'B'则必定为删掉B并翻转。
这样把A、B先削成同一长度然后判等就可以了。
数据范围2000,翻转直接暴力,判定长度直接暴力就行了。
T3 tree
(又是假期望……)
设$x_u$表示从u节点开始走出以u节点为根节点子树的期望步数。(u节点头上还连着一根出去的“天线”)
分析可得式子:$x_u=frac{1}{du_u}(1+sumlimits_v (1+x_v+x_u))$(进去一步,出来$x_v$步,循环往复$x_u$步)
把式子化开可得:$x_u=sumlimits_v x_v$
从叶子节点开始推可知$x_u=2*size[u]-1$(size为子树大小)
裸的树形dp完事了。