摘要:将1设为树根节点,接下来就好想了,因为更新一个点对应到1的路全部都要更新对于一个节点u,dfs他的所有儿子节点,返回最大需要+1的操作和最大需要-1的操作再接合自身返回给父亲节点+1 -1的最大操作最后结果就是1节点+1和-1的最大操作和 1 #include 2 #include 3 #inclu...
阅读全文
摘要:之前有想过树的直径咋求,不过一直没仔细去考虑。昨天做了hdu2196 今天突然想到如果把max(up[i]+dis1[i])求出来不就是直径maxx嘛==随后百度了一下看到别人大多数是两次bfs,我从hdu上找了一道题目,果然是可以的。思想应该是一样的吧,都是求两条最长路。这题用到最长路还有:1.k...
阅读全文
摘要:一开始就想到了树形dp,然后下午就一直在做其他事中思考==首先,我用一个dfs来找每一个节点所对应的树中到该节点最远距离dis1[],这个很简单,然后。。。。。。我再思考如何计算这个点到他的兄弟和父亲最远。。。。。。好难描述我的想法历程,语文好差T_T==大概就是这样,我在刚才的dfs中记录了最远的...
阅读全文
摘要:有一个技巧如何把森林转化成树?把所有无根点连向一个统一的根。 1 #include 2 #include 3 #include 4 using namespace std; 5 int now,m,head[205],next[205],point[205],dp[205][205]; 6 void...
阅读全文
摘要:下午和cp,杰哥在一起做bzoj,交了自己的bzoj处女交,水了两道数位dp,前段时间学的数位dp模板好呀TUT1026:http://www.lydsy.com/JudgeOnline/problem.php?id=1026l到r之间相邻数绝对值差大于等于2数的个数本来开三维记录当前位,前一位,有...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int son[6005],dp[6005][3],father[6005],f[6005][6005],a[6005]; 7 void dfs(int x) ...
阅读全文
摘要:#include#include#include#includeusing namespace std;int son1[205],f[205][205],dp[205][2],dup[205][2],hash[205];char s[205][105],s1[105],s2[105];void d...
阅读全文
摘要:1 #include 2 #include 3 int max(int a,int b) 4 { 5 if (a>b) return a; 6 return b; 7 } 8 int m; 9 int dp[150][150],son[150],bug[150],pos[150],...
阅读全文