|
|
|
|
|
摘要:
分别将x、y坐标排序之后统计有效小矩形即可。这类题目也可以加上线段树优化,可是这道题的数据范围仅仅为n<=100,是可以不用线段树的,直接统计也能AC.CODEProgram Atlantis;//By_ThispoetConst maxn=300;Var i,j,k,m,n,p,q :Longint; ans :Extended; x,y,hx,hy :Array[1..maxn]of Extended; rankx,ranky :Array[1..maxn]of Longint; rex,rey :Array[1..... 阅读全文
posted @ 2011-09-13 15:07
This_poet
阅读(531)
推荐(0)
编辑
摘要:
题目大意:写程序读入一个整数序列。每次读入第奇数个数后,输出当前序列的中位数。{以上感谢铎铎大牛提供的翻译}我想出来的是离线算法:将整体读入之后快排,建立链表,首先求出最后一个中位数,然后按读入顺序从后向前每次删去两个数,有如下五种情况:如果删去的两个数都比中位数大,那么将中位数的位置移到没有被删去的比当前中位数小的最大的数。如果删去的两个数都比中位数小,那么将中位数的位置移到没有被删去的比当前中位数大的最小的数。如果两个数中一个比中位数大而另一个比中位数小,那么当前中位数位置不动。如果删去的是中位数和另一个比它大的数,那么中位数的位置移向没有被删去的比当前中位数小的最大的数。如果删去的是中位 阅读全文
posted @ 2011-09-11 14:22
This_poet
阅读(698)
推荐(0)
编辑
摘要:
类似于树形动态规划的贪心。题目大意:这个城市由节点和连接节点的街道组成,街道是双向的。此刻大雪覆盖了这个城市,市长确定了一些街道要将它们清扫干净,这些街道的确定保证所有节点可以通过它们连通而且街道数目尽可能小。有两台相同的扫雪机S和M,它们的起点在同一个节点上。所有被确定的街道必须至少被一台扫雪机经过,才能完成清扫任务,完成任务后S和M可以在原地停下,不必集合到某一点。扫雪机的行进是需要耗费油量的(即使扫雪机行驶的是已被扫净的街道),因此扫雪机行进的总距离越小越好,你需要计算两台扫雪机完成任务的最小总行进距离。{以上感谢铎铎大牛提供的翻译}解法:首先从根节点出发找到一条最长的链,然后将这条链上 阅读全文
posted @ 2011-09-11 13:59
This_poet
阅读(251)
推荐(0)
编辑
摘要:
本题是一道典型的差分约束系统问题。关于差分约束系统,请visit 百度百科:http://baike.baidu.com/view/1008149.htm简略成一句话,那就是:对于i-j<=k 这样一个条件,就在j和i之间连一条有向边,边权为k对于本题,有两种条件,两头牛的距离不大于或者不小于k,距离不大于k的时候按照差分约束系统的条件即可进行,而距离不小于k时则可以按照如下数学方法转换:原条件为:i-j>=k 可转化为 j-i<=-k,即在i与j之间连一条边权为-k的有向边。之后一般的SPFA即可。如果存在负环,就说明不存在解,如果起点到终点没有路径,那么说明距离可以到达无 阅读全文
posted @ 2011-09-11 13:45
This_poet
阅读(226)
推荐(0)
编辑
摘要:
思路:二分答案,用权值比二分出来的答案小的边来建图。网络流判定的是是否能够满足找到t条路径。CODEProgram Secret;//By_Poetshy Const maxn=40000; Var i,j,k,m,n,p,t,d :Longint; pre,other,last,data :Array[1..maxn*2]of Longint; a,b :Array[1..200]of Longint; v :Array[1..2... 阅读全文
posted @ 2011-09-02 21:12
This_poet
阅读(289)
推荐(0)
编辑
摘要:
初看此题时,显然大家都想到了贪心+搜索+剪枝,但是POJ的评测机是很不给力的,一定是TLE。所以,理所当然的,我们知道了random的威力。先证明一下贪心算法的正确性:策略:将这n*3个元素倒序快排一下,取前n*2个元素分为两组,最后n个元素分为一组。证明:如果不这样选的话,那么前两组的总和必会比这样选的情况小,那么更有可能失败。证毕。随机化算法:每次从前两个集合中各选一个元素进行交换,如果满足条件直接输出并halt.这个随机化的证明嘛,我也不会。CODEProgram POJ2454;//By_PoetshyConst maxn=200;Var i,j,k,m,n :Longint;... 阅读全文
posted @ 2011-09-02 21:05
This_poet
阅读(615)
推荐(0)
编辑
摘要:
单源最短路的SPFA算法即可。CODEProgram Alibi;Const maxn=1000;Var i,j,k,m,n,f,p,c,o,r,d :Longint; pre,other,last,dist,data :Array[1..maxn*2]of Longint; ans,place :Array[1..maxn]of Longint; Procedure Spfa;var seq :Array[1..maxn*10]of Longint; h,t :Longint;begin h:=0;t:=1;seq[1]:=1; fillchar(dist,size... 阅读全文
posted @ 2011-09-02 20:56
This_poet
阅读(253)
推荐(0)
编辑
摘要:
贪心思想:维护每一个点上的两种决策:取这个点的价值还是取这个点前面权值最小的点的价值。取完这个点后,更新最小值并处理下一个点。证明:因为储存价值s固定,所以贪心策略成立。CODEProgram Yogfac;//By_PoetshyVar i,n,m :Longint; re,ans,p,q :Int64; BEGIN ans:=0; readln(n,m);re:=maxlongint>>1; for i:=1 to n do begin readln(p,q); inc(re,m); if re<p then inc(ans,re*q) else ... 阅读全文
posted @ 2011-09-02 20:54
This_poet
阅读(295)
推荐(0)
编辑
摘要:
此题为一般的动态规划,为可能性动态规划。初态只需将f[0]:=true;在所有都不小于a[i]的条件下进行动态规划。状态转移方程:f[j+c[i]]:=true (if (f[j]=true) and (j+c[i]<=a[i]))注意动态规划的顺序:一定要倒推,否则会造成重复。CODEProgram Elevator;//By_PoetshyConst maxn=40000;Var i,j,p,n,max,re :Longint; f :Array[0..maxn]of Boolean; h,c,a :Array[1..400]of Longint; Fun... 阅读全文
posted @ 2011-09-02 20:48
This_poet
阅读(233)
推荐(0)
编辑
摘要:
复习一下欧拉回路的求法。伪代码如下:Void Eular(int p);{ for 从p出发的每条边 { 如果这条边没有被访问过 { 边的访问标记置为 true Eular(这条边上另外一个点); 将这条边压入栈中; } }}倒序访问栈中每一条边就是答案。CODEProgram POJ2230;//By_PoetshyConst maxn=10000; maxm=50000;Var i,j,k,m,n,p,q :Longint; pre,other,last :Array[1..maxm*2]of Longint; v ... 阅读全文
posted @ 2011-09-01 19:31
This_poet
阅读(396)
推荐(0)
编辑
|
|