摘要:
题意:在一棵树上,找出一个节点,使得每一个节点到达该点的距离(权值*路径长度)和最短。分析:先dfs求出每一个节点到根节点的距离和,然后再一次深搜即可。交了之后悲剧的爆栈了,递归太是太深了,所以,开挂了,哈View Code #include<iostream>#include<algorithm>#include<vector>using namespace std;const int N = 100010;#pragma comment(linker, "/STACK:1024000000,1024000000") //开挂了,嘿嘿s 阅读全文
摘要:
题意:给定一棵树,从1号顶点进入树中,每次可以分配人到其他可达的顶点去,杀死所有的bugs可以获取brain值,求出m个人最多能获取多少brain值。分析:树形DP,需要注意的有俩点:1)只有通过父节点才可能到达儿子节点,而且,通过父亲节点必须满足人数足够消灭该节点上的所有bugs2)对于每一棵子树而言,至少要有一个人才可能获得该子树上的brain,即使没有bugs用dp[i][j]表示派遣j个人到达以i为根的子树所能获得的最大brain值View Code #include<iostream>#include<algorithm>#include<string& 阅读全文
摘要:
题意:给定一棵树,每条边都有各自的权值,要求用K个机器人(从根出发),遍历整棵数,求最小总权值分析:一开始很清楚的知道,还是一道树形背包,用dp[i][j]表示以节点i为根的子树选了j个机器人遍历的权值和。关键在j==0 时的意义的理解,一开始总处理不好,就是dp[i][0]表示的是以i为根的子树放置一个机器人遍历完子树之后又回到iView Code #include<iostream>#include<algorithm>#include<string>#include<vector>using namespace std;const int 阅读全文