I and OI
Past...
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 35 下一页
摘要: 题意:给定一棵树,问删除哪个点,使余下的各个子树结点个数的最大值最小.分析:先DFS一次,求出以每个节点为根的子树的节点个数s[i].设f[i]表示去掉i后,余下的各个子树结点个数的最大值.f[i]=max(n-s[i],max{s[j]}). (j为i的儿子).这样再DFS一次,求出max{f[i]}即为答案.code:type edge=record v,n:longint;end;const maxn=20001; oo=100000000;var e:array[0..maxn*2] of edge; h,s,f:array[0..maxn] of longint; vis:array 阅读全文
posted @ 2011-08-10 15:49 exponent 阅读(867) 评论(0) 推荐(0) 编辑
摘要: 题意:就是求最长上升子序列.分析:N^2DP会超时,用NlogN的算法.code:var a:array[0..40001] of longint; datanum,d,n,i,p,top,num:longint; procedure find(key,l,r:longint); var mid:longint; begin if l=r then begin p:=l; exit; end; mid:=(l+r)>>1; if a[mid]>key then find(key,l,mid) else find(key,mid+1,r); end;begin readln(d 阅读全文
posted @ 2011-08-10 15:43 exponent 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题意:N组学生.一个学生能同时加入不同的组.同一组的学生会同时感染病毒.现在0号的学生感染了病毒,问一共有多少个人感染病毒.分析:并查集.将同一组的学生合并.这样有交集的组也被合并.最后只要求出0号所在的集合大小即可.code:var f:array[0..30000] of longint; n,m,i,j,k,u,v,fu,fv,fx,ans:longint; function getf(x:longint):longint; begin if f[x]<>x then f[x]:=getf(f[x]); exit(f[x]); end;begin while not seek 阅读全文
posted @ 2011-08-10 15:41 exponent 阅读(228) 评论(0) 推荐(0) 编辑
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 35 下一页