摘要: 树的直径的证明:结论:s-t是树的直径,即树上最长的路。则一共满足从任意一点u出发,搜索到的最远的点一定是s或者t。找到s或者t,从s或者t出发搜索即可找到树的直径。证明:①如果u是s-t路径上的一个点,那么搜到的一共是s或者t了,否则s-t就不是最长路径了。dis(u,T) >dis(u,s) 且dis(u,T)>dis(u,t) 则最长路不是s-t了,与假设矛盾。②如果u不是s-t路径上的点,假如u走到了s-t路径上的一点,那么接下来的路径肯定都在s-t上了,而且终点为s或t,在1中已经证明过了 所以现在又有两种情况了: 1:u走到了s-t路径上的某点,假设为X,最后肯定走到某 阅读全文
posted @ 2013-04-10 21:33 _sunshine 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=16思路:d(i)=max{0,d(j)矩形j可以嵌套在矩形i中}+1记忆化搜索,否则会超时:View Code 1 #include<stdio.h> 2 #include<string.h> 3 const int N=1005; 4 int a[N],b[N]; 5 bool map[N][N]; 6 int dp[N]; 7 int T,n; 8 int DP(int i){ 9 int &ans=dp[i];10 if(dp[i]!=0) retur 阅读全文
posted @ 2013-04-10 21:02 _sunshine 阅读(607) 评论(0) 推荐(0) 编辑
摘要: 学习资料:http://blog.csdn.net/ggggiqnypgjg/article/details/6645824时间复杂度O(N)模板:View Code 1 void Manacher(int n) 2 { 3 int i; 4 int mx=0;//记录前面回文串最... 阅读全文
posted @ 2013-04-10 20:38 _sunshine 阅读(373) 评论(0) 推荐(0) 编辑