dfs
Cichard
这个作者很懒,什么都没留下…
展开
-
codeforces1388C dfs+条件判定+逆向思维
1388C 1800的题 题意: 一个国家由n个城市组成,并且这些城市之间的道路形成了一棵树,并且首都为1,其他城市为2~n,有m个人在首都打工,要回到自己的家乡,这些人有开心的也有不开心的,开心的人也有可能在回家的路上变为不开心的,现在给你数组p[]表示每个城市是多少个人的家乡,h[]表示有多少人经过这个城市是开心的抑或不开心的,数值为开心的人数减去不开心的人数,注意这里是经过即可,在这个城市驻留的也算,然后给你n-1条边,表示这个国家各个城市之间的道路关系,问你这个开心的数值是否合理。 思路: 对于每个原创 2020-07-31 15:52:41 · 244 阅读 · 0 评论 -
codeforces1405D. Tree Tag 树的直径+思维
1405D 1900原创 2020-09-19 20:26:45 · 229 阅读 · 0 评论 -
codeforces1401D dfs+贪心
1401D 题意:给你一棵树n个节点,n-1条边,然后给你m个值且都为素数,m和n之间的大小未知,让你对这n-1条边赋值使得这n-1条边的乘积为m个值的乘积,现让你在用1最少的情况下(即为边的值),使得 最大,简单的说就是节点1到节点2,3,4…n所经过的路程加上节点2到3,4,5…n所经过的路经加上…n-1到n所经过的路经。 思路:简单的说就是如果n>m那么就意味这有n-1-m条边是要被赋值1的,如果n<m,就意味着最大的那条边要多乘上m-n+1条边,这个是对与边的贪心,之后就是难点了,每条原创 2020-08-23 16:33:22 · 224 阅读 · 0 评论 -
codeforces1399E1 dfs+优先队列
1388E1 2000的题 题意:给你一个具有n个点,n-1条边的树,且每条边都有其权值,你可以对这些边进行操作,比如这条边的权值为w,进行操作之后变为w/2向下取整,问你最少进行多少次操作才能使得从根节点到各个叶子结点的权值之和小于S。 思路:对这棵树进行dfs一遍得到从根节点到叶子节点每条边要经过多少次,然后进行贪心,用优先对列来实现,因为他的操作是对w/2,进行向下取整所以不能说直接用经历的次数*该边的权值,会有精度损失。具体实现可看代码,memset是真的比for慢将近一倍 #pragma GCC原创 2020-08-16 14:51:40 · 143 阅读 · 0 评论