BZOJ1914
摘要:对于每一个点,它与原点的连线将平面划分为两个半平面,我们统计连线的逆时针方向的半平面中的点的个数N,这N个点与这个点构成的N(N-1)/2个三角形都是不包含原点的.最后只要用总个数减去这些三角形的和就是答案.统计过程极角排序后可以做到O(N)./************************************************************** Problem: 1914 User: exponent Language: Pascal Result: Accepted Time:260 ms Memory:1008 kb *...
阅读全文
posted @
2011-08-24 18:00
exponent
阅读(530)
推荐(0)
BZOJ1916
摘要:记忆化搜索,f[u,k]表示到节点u时,剩下k次失控的机会,所能得到的最大快乐值.f[u,k]=max{f[v,k]+w[u,v]} f[u,k]=min(f[u,k],f[v,k-1]+w[u,v]) (v是u的儿子)/************************************************************** Problem: 1916 User: exponent Language: Pascal Result: Accepted Time:996 ms Memory:6868 kb *************...
阅读全文
posted @
2011-08-24 17:50
exponent
阅读(281)
推荐(0)
BZOJ1828
摘要:按右端点排序,插入即可./************************************************************** Problem: 1828 User: exponent Language: Pascal Result: Accepted Time:1892 ms Memory:9212 kb ****************************************************************/ type node=record l,r,s,a:longint; en...
阅读全文
posted @
2011-08-21 19:01
exponent
阅读(282)
推荐(0)
BZOJ1827
摘要:首先初始化解为在点1的代价.从一个点u移动到另一个点v,相当于以v为根的子树上的所有点少走dis(u,v),其余点多走dis(u,v).dfs遍历一次就可以出解了./************************************************************** Problem: 1827 User: exponent Language: Pascal Result: Accepted Time:628 ms Memory:5824 kb *****************************************...
阅读全文
posted @
2011-08-21 15:20
exponent
阅读(315)
推荐(0)
BZOJ1778
摘要:高斯消元.参考:http://blog.csdn.net/dfs35123/article/details/5823013/************************************************************** Problem: 1778 User: exponent Language: Pascal Result: Accepted Time:696 ms Memory:1212 kb ****************************************************************/ const maxn=301; var
阅读全文
posted @
2011-08-20 17:26
exponent
阅读(361)
推荐(0)
BZOJ1777
摘要:以深度划分节点为两类,奇数深度和偶数深度的节点(根节点深度为0).我们的最终目的是使得所有石子在根节点上,也就是奇数数深度的节点上的石子数之和为0.对于从偶数节点向奇数节点移动的石子,可以从奇数节点上再次向偶数节点移动,从而使得奇数节点上的石子数之和不变.所以我们只需考虑从奇数节点向偶数节点移动的情况.这显然就是Nim游戏了.注意一下对L的处理.code:/************************************************************** Problem: 1777 User: exponent Language: Pascal Result: Acc
阅读全文
posted @
2011-08-17 11:37
exponent
阅读(586)
推荐(0)
BZOJ2097
摘要:题意:最多去掉一个树上的s条边,将树分割成S+1块,使得所有块的最长链的最大值最小.USACO官方的题解讲的很清楚..First, conduct a binary search on the answer, D. To do this, just find a way to check, for any D, if it is possible to make S cuts such that each tree has diameter at most D.We will give a greedy algorithm which will compute the smallest num
阅读全文
posted @
2011-08-14 15:44
exponent
阅读(369)
推荐(0)
BZOJ2100
摘要:简单的最短路.要用堆优化的dijkstra.当复习了.code:/************************************************************** Problem: 2100 User: exponent Language: Pascal Result: Accepted Time:572 ms Memory:7356 kb ****************************************************************/ type edge=record v,w,n:longint; end; const maxm=
阅读全文
posted @
2011-08-14 13:31
exponent
阅读(289)
推荐(0)
BZOJ2101
摘要:首先O(N^2)的DP挺好想的.f[i,j]=sum[i,j]-min(f[i+1,j],f[i,j-1]).但题目把n出到5000,内存卡到64M,二维的状态存不下..其实,j这一维可以省掉.我们换个状态表示f[i,i+len]=sum[i,i+len]-min(f[i+1,i+len],f[i,i+len-1])然后循环这样写:for len=1 to n for i=1 to n-len.容易看出第二维可以省掉了.code:/************************************************************** Problem: 2101 User:
阅读全文
posted @
2011-08-14 13:02
exponent
阅读(246)
推荐(0)
BZOJ1776
摘要:简单的LCA.有一个结论,每个party中最远的点对中,必有一个点是该party中深度最大的点.然后记low[i]为第i个party的最深点,对每一个点查询dist(i,low[belong[i]]).belong就是第i个点属于哪个party.对于树上两点,dist(u,v)=depth(u)+depth(v)-2*depth(lca(u,v)).一开时用RMQ的LCA死活过不去.无奈,只好去学了tarjan的LCA.code:/************************************************************** Problem: 1776 User:
阅读全文
posted @
2011-08-14 10:45
exponent
阅读(367)
推荐(0)
BZOJ1601
摘要:我们新建一个0号点,作为水库的水源,到每个点的费用就是wi.注意到每个点的水源只有一个,所以最后答案是一棵树.显然是最小生成树了.code:/************************************************************** Problem: 1601 User: exponent Language: Pascal Result: Accepted Time:100 ms Memory:584 kb ****************************************************************/ const maxn=
阅读全文
posted @
2011-08-13 20:55
exponent
阅读(340)
推荐(0)
BZOJ1180
摘要:水题.对于最后的方案,表达式必然是下面这个样子的:(Xa1-Xb1)+(Ya1-Yb1)+(Xa2-Xb2)+(Ya2-Yb2)+...+(Xan-Xbn)+(Yan-Ybn)去掉括号,就等于|∑Xai-∑Xbi|+|∑Yai-∑Ybi| (1<=i<=n)读入完就出解了.code:/************************************************************** Problem: 1108 User: exponent Language: Pascal Result: Accepted Time:908 ms Memory:224 kb
阅读全文
posted @
2011-08-13 18:50
exponent
阅读(240)
推荐(0)
BZOJ2274
摘要:f[i]=∑f[j] (sum[j]<=sum[i]).sum为前缀和.裸的DP是O(N^2)的,其实我们要找的j只需满足sum[j]<=sum[i],然后求和.而树状数组天生就是干这个的.范围大,离散化一下就好了.code:/************************************************************** Problem: 2274 User: exponent Language: Pascal Result: Accepted Time:140 ms Memory:2568 kb ***************************
阅读全文
posted @
2011-08-13 17:20
exponent
阅读(317)
推荐(0)
BZOJ1096
摘要:CEOI2004Two的加强版.code:/************************************************************** Problem: 1096 User: exponent Language: Pascal Result: Accepted Time:6220 ms Memory:51008 kb ****************************************************************/ const oo=1e100; maxn=1000001; var f,x,p,c,sum,cost:array[
阅读全文
posted @
2011-08-13 16:41
exponent
阅读(413)
推荐(0)