|
|
|
|
|
|
POJ2010 Moo University - Financial Aid —— 二分答案+巧妙的判断
摘要:二分答案,但是这里的判断不同于一般的二分。分别将cows和cowc按照s和c排序。我的代码里check函数的返回值含义如下:-1 直接输出,不可能满足条件了0 这种方案是满足条件的,可以把中位数调大试试1 这种方案是不满足的,但是把中位数调大就有可能满足了(否则不可能满足)2 这种方案是不满足的,但是把中位数调小就有可能满足了(否则不可能满足)还是不会用cpp,用了switch语句却没写break,导致纠结了好长时间。终于给家里台式机装上Ubuntu了,才发现NOI Linux就是害人用的啊。参考代码# include <cstdio># include <iostream&
阅读全文
POJ2195 Going Home——二分图最大带权匹配的KM算法——pku2195
摘要:KM算法模板题。友情链接:百度百科KM算法:http://bk.baidu.com/view/739278.htm注意事项:1、在每次Dfs做匈牙利算法的时候都要将可更新值slack赋为无穷大2、在扩大相等子图的时候注意要将不在交错树中的y节点的slack值减去更新值d3、百度百科上给的程序复杂度为O(n^4),我的代码时间复杂度是O(n^3)代码:Program KM;//By_ThispoetConst maxn=200;Var i,j,k,m,n,toth,totm,d,ans :Longint; slack,res,a,b :Array[1..maxn]of Long...
阅读全文
POJ3461 Oulipo ——KMP算法——Pku3461
摘要:建议大家学一学比较巧妙的KMP算法吧,很有意思。推荐个题目:POJ3167 Cow Patterns 题解我会发在本博里。这个KMP就木有什么好说的了吧,大家找百度百科学一下就可以了~CODEProgram KMP;//By_ThispoetConst maxn=1000005;Var st,s :Ansistring;//st is long and s is short pre :Array[-1..maxn]of Longint; i,k,p,q,ans,n :Longint; BEGIN readln(n); while n>0 do begin ...
阅读全文
POJ1151 Atlantis ——离散优化——Pku1151
摘要:分别将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.....
阅读全文
POJ3784 Running Median——双向链表/堆——Pku3784
摘要:题目大意:写程序读入一个整数序列。每次读入第奇数个数后,输出当前序列的中位数。{以上感谢铎铎大牛提供的翻译}我想出来的是离线算法:将整体读入之后快排,建立链表,首先求出最后一个中位数,然后按读入顺序从后向前每次删去两个数,有如下五种情况:如果删去的两个数都比中位数大,那么将中位数的位置移到没有被删去的比当前中位数小的最大的数。如果删去的两个数都比中位数小,那么将中位数的位置移到没有被删去的比当前中位数大的最小的数。如果两个数中一个比中位数大而另一个比中位数小,那么当前中位数位置不动。如果删去的是中位数和另一个比它大的数,那么中位数的位置移向没有被删去的比当前中位数小的最大的数。如果删去的是中位
阅读全文
POJ1849 Two——贪心——Pku1849
摘要:类似于树形动态规划的贪心。题目大意:这个城市由节点和连接节点的街道组成,街道是双向的。此刻大雪覆盖了这个城市,市长确定了一些街道要将它们清扫干净,这些街道的确定保证所有节点可以通过它们连通而且街道数目尽可能小。有两台相同的扫雪机S和M,它们的起点在同一个节点上。所有被确定的街道必须至少被一台扫雪机经过,才能完成清扫任务,完成任务后S和M可以在原地停下,不必集合到某一点。扫雪机的行进是需要耗费油量的(即使扫雪机行驶的是已被扫净的街道),因此扫雪机行进的总距离越小越好,你需要计算两台扫雪机完成任务的最小总行进距离。{以上感谢铎铎大牛提供的翻译}解法:首先从根节点出发找到一条最长的链,然后将这条链上
阅读全文
POJ2455 Secret Milking Machine ——二分答案+网络流——Pku2455
摘要:思路:二分答案,用权值比二分出来的答案小的边来建图。网络流判定的是是否能够满足找到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...
阅读全文
POJ1987 Distance Statistics——树的分治——Pku1987
摘要:这道题是楼教主《男人八题》中的一题,算法:树的分治。看到题目时很容易想到直接Dfs,但那样的话时间复杂度会高达O(n^2)!对于n<=40000的数据来说根本无法承受。所以,必须考虑分治的思想。怎么分治呢?树的重心!至于树的重心,不熟悉的OIer可以做掉POJ1655,或者NOI2011 Day2的第一题来练手,这两道题要求的就是树的重心。至于pascal语言的ACMer可以考虑编译开关,OIer最好不要加编译开关,练一练非递归手写栈也是不错的。基本思路:1、把这棵无根树以1为根节点,使其变成一棵有根树。2、对于每棵现在要处理的树,进行如下处理:(1)遍历这棵树,找到所有一端点为根,路径
阅读全文
POJ1989 The Cow Lineup——贪心+扫描法——Pku1989
摘要:开始的时候没有想出算法,上网查题解,居然有人说这题是动态规划……无奈。偶然间看到了上海交大马融牛的解题表格:只有一句话,从前向后扫描。才知道这道题用到的只不过是一个贪心思想。贪心思想:把序列划分成尽量多的连续子序列,使得每一个连续子序列都满足如下条件:1..k每个数字都在这个子序列中出现过一次,并且至少有一个数字只出现过一次。这样的子序列的个数+1就是答案贪心思想证明:要让长度为j的序列全部出现,必须满足第一个数字可以取1..k任意一个,第二个数字可以取1..k任意一个……以此类推当已经划分成j个子序列并无法向后划分的时候,说明第j+1个数是不能在1..k的范围内自由选择的。所以,最短不出现子
阅读全文
|
|