今天的分数还是比较好看的,比期望得分还有好。
先浏览一遍题目:
第一题,有点印象,好像之前做过,很快就想到了正解。
第二题,是期望,赶紧先手算一下样例。啊?答案竟然与样例给出的答案不同,又认真算了一次,答案还是跟样例不同,感觉有点懵。
第三题,是最小生成树,没有什么想法,估计只能拿部分分。
花了半个多小时浏览完题目,并且有了一些想法,
就开始打第一题,拓扑序加上c++自带优先队列,不用30min就解决了。对拍程序也很好打,当我在打第一题对拍的时候,出题人跑下来说第二题样例有问题,改了之后,正好跟我之前算出来的答案一样。恰好在我准备深入研究第二题之前改了样例,没有造成什么影响。
第二题n方的方法还是很好打的,用了不到20min就搞定了。不过这样只有30分,每次改变了根之后都是要重新地计算一次期望。后来,我就发现如果每次将根节点的儿子变为根的话,只改变了一条边的关系,有点类似splay。于是便愉快地解决了这题。
搞完前面两题,时间还是比较充裕,留下了2个多小时给第三题。先打出了一个暴力的prim。然后我想到,最小生成树是从小到大加入边的,就想到了枚举边权。然后将这个边权的所有边都加入。与暴力对拍也没有发现什么错误,自己随机了大数据,都挺快的,而且题目是7s+738MB。
有了昨天不特殊构造数据的教训,这次我就构造了第二题一条链的极限数据,发现爆栈了。赶紧改人工栈,结果没有调出来。
期望得分:100+80(可能会爆栈)+70(担心有特殊数据)。
自己该拿的分就一定要拿到,花多点时间打对拍是不会吃亏的,而且还能练习自己的搜索能力。只有拿到该拿的分数,排名就不会太差。