I and OI
Past...
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 35 下一页
摘要: 题意:给出n个村庄的坐标,要求建m个邮局,使得所有村庄到离其最近的邮局的距离之和最小.分析:DP.f[i,j]表示前i个村庄建j个邮局的最小代价.f[i,j]=min{f[k,j-1]+cost[k+1,i]}cost[l,r]表示在l,r之间建一个邮局,代价是多少.可以O(N^3)地预处理出来.总复杂度为O(N^3).code:const oo=100000000;var f,dis:array[0..310,0..310] of longint; p:array[0..310] of longint; n,m,i,j,k,now,mid:longint; function min(a,b: 阅读全文
posted @ 2011-08-10 13:12 exponent 阅读(726) 评论(0) 推荐(0) 编辑
摘要: 题意:求最少添加多少个括号可以使得原序列成为合法的括号序列,并输出这个合法的括号序列.分析:DP,记录路径.用f[i,j]表示i~j之间的序列至少添加多少个括号.显然,f[i,i]=1.1.f[i,j]=f[i+1,j-1] (s[i],s[j]可以配对)d[i,j]=-1;2.f[i,j]=min{f[i,k]+f[k+1,j]} (i<=k<=j-1)d[i,j]=k;(k是f[i,j]的决策点)方案输出见代码.code:const oo=10000000;var f,d:array[0..110,0..110] of longint; s:array[0..110] of c 阅读全文
posted @ 2011-08-10 13:02 exponent 阅读(490) 评论(0) 推荐(0) 编辑
摘要: 题意:对于一个点i,设f(i)=max{mindis[i,j]} (j≠i).其中mindis是各个点对之间的最短路.求min{f(i)} (1<=i<=n).分析:floyd求出最短路即可.code:var person,time,n,i,j,k,p,min,max,mini,minperson:longint; map:array[0..110,0..110] of longint; f:boolean;begin readln(n); while n<>0 do begin fillchar(map,sizeof(map),1); for i:=1 to n do 阅读全文
posted @ 2011-08-10 12:54 exponent 阅读(303) 评论(0) 推荐(0) 编辑
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 35 下一页