2016.08.17【初中部 NOIP提高组 】模拟赛C

来源:互联网 发布:w7 禁止安装软件 编辑:程序博客网 时间:2024/05/21 00:48

这次考试还是失手了,第二题这种水题竟没做出,只能怪自己智商还没达到一个高度咯...


T1:

只需要对于所有颜色为白色的点进行一遍bfs即可.


T2:

很明显,我们只需要对于每一个新安装的基地进行一遍spfa,然后顺便记录当前所安装的全部基地到一个点的最优值,如果这个最优值大于等于k就可以输出.


T3:直接对每两个点连一条边,然后做一遍kruskal就行了.


T4:

先对树进行一遍dfs,预处理出以每个点为根,其拥有的节点数量.

这个预处理呢,就可以先选定节点1作为整棵树的根,然后从节点1开始往下遍历,每次不能遍历之前已经遍历过的点,然后可以看出一个点的值很明显就等于其拥有的儿子中每个儿子的值之和.


预处理完之后,直接枚举断掉哪一个点,然后直接记录断掉这个点所产生的子树的答案.

这里子树的答案很明显分两种情况,一种就是子树的根是断掉点的儿子,则直接加上子树根的答案.

一种是子树的根是断掉点的父亲,则直接用f[1]-f[i](f[i]表示以i为根所组成的树当中的节点数量)


记录答案之后直接判断是否<=n div 2就行了.

4 4
原创粉丝点击