最近改题是真慢,坑点很多
前天做插头dp时颓了别人博客的一份代码,没想到它WA了(颓代码的恶报)
道理上讲,插头dp的“轮廓线”以上已转移完成,也就是说,每一个格子必须选一个插头,不能空着
但那篇博客打的多转移了空位状态,我一开始没看出来
这天上午改考试题,发现T3的式子很奇妙,yu-shi给出了证明
T2用到了树上启发式合并(dsu on the tree),启发式合并并不只是线段树的合并
这题可以看成询问子树颜色种类,于是便可以dsu on the tree
大体思路:维护一个数据结构,存当前子树的信息
用vector存放每个节点的操作
每到一个节点x,先向下递归它的轻儿子,再递归重儿子son
回溯时,是轻儿子,数据结构清空,是重儿子,保留数据
这样,回溯到x时,数据结构里包含重儿子的子树信息,为了得到x子树的信息,再加上x的所有轻儿子,以及x本身的贡献即可
查询数据结构得到当前子树的答案
接着合并操作,使用启发式合并,把小的vec(x节点及其轻儿子的)合并到大的里去(重儿子的)
这一道题连学带改用了大概一天
其实一开始挺顺利,没什么大错,但死活改不过60分(摆脱不了C等级了)
后来找yu-shi调,都快和他的一模一样了竟还是不行
最后我们从头开调,看快读read,yu-shi大神当机立断,快读没打负数
震惊了,我也不知道颜色为什么还能负数表示(没这套的啊)(又被yu-shi笑话半天)
晚上又是惊人的相似
改插头dp T3,打了高精度,到了90分,特判(1 1)=1
然而他的特判是$N=1 || M=1$时,$cout<<1;$
这又很没道理了,洛谷上题面说邮筒可以重复经过,要求的是最短路的方案
当N,M有一个是偶数,最短路自然是哈密顿回路;当N,M全为奇数,最短路一定会重复经过某些邮筒,方案数不为0,也不一定是1
难道还需要另外dp解决?
总之这几天怪事挺多