[POJ1062 Cipher]
摘要:[关键字]:数学 置换群[题目大意]:给出一组置换,然后要求出把给出的文字按位置置换k此后的信息。//==========================================================================================================================================[分析]:首先求出这个置换的循环,并记录循环的长度环每个位置上的值。找到每个位置所属的循环然后它在循环中的位置加k再对循环长度取模就是它的最终位置。[代码]:View Code #include<iostream&g
阅读全文
posted @
2012-04-17 11:40
procedure2012
阅读(187)
推荐(0)
[POJ2396 Budget]
摘要:[关键字]:图论 网络流[题目大意]:给出一个矩阵没行和和每列的和,并给出每个格子的上下界,求出一个合法的矩阵。//============================================================================================================[分析]:就是首先建立一个图,源点到每个行的边的容量上下界都为该行的和,每列到汇点连一条容量上下界都为该列和的边,每行的点到每列的点连一条容量上下界为这一行和这一列所代表的格子的上下界。然后对着个图判断它是否有最大流并求出。对一个图求容量有上下界的最大流的方法是:1、
阅读全文
posted @
2012-04-16 15:47
procedure2012
阅读(1493)
推荐(0)
[POJ2125 Destroying The Graph]
摘要:[关键字]:图论 网络流[题目大意]:给出一个有向图,定义两种操作:w+(i)删掉i点的所有入边w-(i)删掉i点的所有出边,每种操作都有对应的花费,问删掉所有边的最小花费。//=========================================================================================[分析]:详细的解法还是看《最小割模型在信息学竞赛中的应用》这篇论文吧。[代码]:View Code #include<iostream>#include<cstdio>#include<cstdlib>#i
阅读全文
posted @
2012-04-02 11:44
procedure2012
阅读(369)
推荐(0)
[POJ2491 Scavenger Hunt、POJ2643 Election]
摘要:[关键字]:STL中map的应用[题目大意]:因为是两道题就不一一写了,自己看吧都很水。//================================================[代码]:因为很水而且只是为了练习一下map所以没有分析直接上代码了POJ2491#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<string>#include<map>using n
阅读全文
posted @
2012-03-29 22:14
procedure2012
阅读(170)
推荐(0)
[POJ1226 Substrings]
摘要:[关键字]:后缀数组 字符串[题目大意]:给定n 个字符串,求出现或反转后出现在每个字符串中的最长子串。//=========================================================================[分析]:和前几道题一样的做法,先见字符串和它反转后的串连在一起并用不同的字分割(小于原串的任意字符且不相同)最后加上一个最小的字符结束,再求后缀数组,二分答案对height数组分组判定是否有至少一组后缀包含所有字串。[代码]:View Code #include<iostream>#include<cstdio>#in
阅读全文
posted @
2012-03-29 22:10
procedure2012
阅读(343)
推荐(0)
[POJ3294 Life Forms]
摘要:[关键字]:后缀数组 字符串[题目大意]:给定n 个字符串,求出现在不小于k 个字符串中的最长子串。//======================================================================[分析]:先将所有字符利用不同且小于所有原字符串中的字符的字符分开,但最后一个字符后面要加上一个小于所有字符的字符。然后二分答案并对height数组进行分组,判断每组后缀数否分在了k个字符串中。输出时就把分在k个字符串中的后缀组输出。[代码]:View Code #include<iostream>#include<cstdio>
阅读全文
posted @
2012-03-29 21:37
procedure2012
阅读(1557)
推荐(0)
[POJ3261 Milk Patterns]
摘要:[关键字]:后缀数组 字符串[题目大意]:给定一个字符串,求至少出现k 次的最长重复子串,这k 个子串可以重叠。//==========================================================================================[分析]:先二分答案判断有没有至少出现k 次的长度为x的重复子串。因为可以重复所以只要heighe数组中有>x说明有长度为x的可重复子串,然后再根据height分组:如果height[i]<x就把i和上一组分开,这样每一组里都存在长为x的重复字串,如果有任意一组里有超过k个,说明成立。[代码
阅读全文
posted @
2012-03-28 11:18
procedure2012
阅读(756)
推荐(0)
[POJ2420 A Star not a Tree?]
摘要:[关键字]:随机化搜索 模拟退火[题目大意]:给出n个点,找出一个距离所有点之和最小的点,输出距离。//===============================================================================[分析]:同样是随机化的方法,只是在把没个点随机移动时有小小的变动。poj1379是使用得随机一个角度x然后利用t*cos(x)和t*sin(x)来处理随机走到的位置,而这道题因为没有了边界的限制,可以用以2t为长以要移动的点位中心的正方形中随机一个移动的位置来求最优值。至于具体退火算法步骤可以看poj1379或http://www.c
阅读全文
posted @
2012-03-28 10:42
procedure2012
阅读(963)
推荐(0)
[POJ1379 Run Away]
摘要:[关键字]:随机化搜索 模拟退火[题目大意]:在一个给定的矩形中有一些点,找到一个点距所有点的最小距离最短。//==============================================================================[分析]:用模拟退火的方法,其实不是标准的模拟退火因为出于时间等因素考虑,并没有加入以一定概率接受稍差解,而只有退火过程。大体步骤:1、随机出NUM个点2、枚举步长,并在此步长下让每一个随机的点随即移动一定次数并记录最优值。3、退火,步长减少。[代码]:View Code #include<iostream>#incl
阅读全文
posted @
2012-03-28 10:20
procedure2012
阅读(499)
推荐(0)
[POJ1389 Area of Simple Polygons]
摘要:[关键字]:数据结构 线段树 扫描法[题目大意]:给出n个矩形的左下角和右上角,求出所有矩形面积的并。//==========================================================================[分析]:可以用扫描法来求,首先将所有y值离散化然后建立线段树(用来求所有竖直的边的并),在把所有矩形都变成两条线——左边和右边,然后左边需要被加入线段树,右边代表退出线段树,并以x为关键字排序。从左到右枚举每一个边加入这样当前边的x1和上一条加入的边x2之间一定是一个矩形,而这个矩形的一边是x2-x1,另一边就是所有在线段树中的边的并,这样只
阅读全文
posted @
2012-03-17 17:42
procedure2012
阅读(378)
推荐(0)
[POJ2195 Going Home]
摘要:[关键字]:图论 二分图最佳匹配[题目大意]:给出n*m的地图,由几个H(房子)和m(人),求每个人都走到一个房子的最少需要的总步数。//============================================================================[分析]:这道题是二分图最大匹配的应用。先把边权取负然后就是求一个边权最大的匹配。利用KM算法求解,具体:http://blog.sina.com.cn/s/blog_625c774e0100hhh7.html[代码]:View Code #include<iostream>#include<
阅读全文
posted @
2012-03-16 21:58
procedure2012
阅读(673)
推荐(0)
[POJ2376 Cleaning Shifts]
摘要:[关键字]:贪心[题目大意]:给出一给大区间和n各小区间,问最少可以用多少小区间覆盖整个大区间。//=========================================================================[分析]:贪心法来求。设t为当前所有已确定区间的最右端,那我们可以每次都取所有可选的小区间(左端点<=t+1)中右端点最大的值,然后更新最右端点ans++。初始时t=0.而由于如果有解t的值是递增的,那每次选区的区间的左端点也必然是递增的,所以可以先排序然后一遍扫描。[代码]:View Code #include<iostream>#
阅读全文
posted @
2012-03-15 21:14
procedure2012
阅读(1659)
推荐(0)
[POJ3836 P2P File Sharing System]
摘要:[关键字]:模拟[题目大意]:模拟一个P2P 下载,每对机器都有一个传输速率,每一个机器都有在线和离线时间,和下载的开始时间,当一个机器开始下载时,它将从所有在线且提供下载且与他有速度的服务器上下载。当它下载完成时,下一秒它就变成了服务器。问T时间之后,各个机器的完成百分比是多少。//=====================================================================================[分析]:枚举每一秒直接模拟这一秒有那些电脑可以下载并枚举那些服务器可以下载,然后更新下载量。如果以下载完就把他标记成服务器。[代码]:View
阅读全文
posted @
2012-03-15 20:47
procedure2012
阅读(189)
推荐(0)
[POJ1083 Moving Tables]
摘要:[关键字]:模拟[题目大意]:一共有400个房间分布在走廊两侧,一侧是1、3、5、7……399另一侧是2、4、6、8……400,有多个操作要求从一个屋子搬一张桌子到另一个屋子如果两个操作占用了一段公共走廊则不能同时进行,每进行一组操作花费十分钟,问最小花费。//========================================================================================================================[分析]:一开始想歪了导致这么简单的题都做了半天。可以想到如果某一段走廊有超过以次操作那么这些操作
阅读全文
posted @
2012-03-15 07:48
procedure2012
阅读(234)
推荐(0)
[POJ3988 Selecting courses]
摘要:[关键字]:贪心[题目大意]:有N个课程,每个课程只能在[ai,bi)!!!的时间内选,且每五分钟只能选一次,问最多可以选几个。//====================================================================================================================================================[分析]:因为只能是隔五分钟才能选,也就是说只要起始时间,所有可以选课的时间点就已经确定,又因为每五分钟可以选一次所以从0开始到从5开始是一样的且0更优,所以从0~4枚举起
阅读全文
posted @
2012-02-23 08:53
procedure2012
阅读(314)
推荐(0)
[POJ3989 A hard Aoshu Problem]
摘要:[关键字]:搜索[题目大意]:给出一个形如ABCDE+DACEB=BC的式子,每个字母代表一个数字,求出可能的方案有多少。//=====================================================================================================================================================[分析]:虫食算的超级简化版……只有5个字母,暴力搜索就可以过……注意不要忽略细节:除数不能为0,判断除法是否成立最好用乘法判断……[代码]:View Code #includ
阅读全文
posted @
2012-02-23 08:41
procedure2012
阅读(303)
推荐(0)
[POJ3987 Computer Virus on Planet Pandora]
摘要:[关键字]:ac自动机 字符串匹配[题目大意]:给出一些字符串和一篇文章,问这篇文章和它倒着读的所组成的文章中一共出现过多少个给出的字符串。//=====================================================================================================[分析]:其实就是两遍AC自动机匹配,注意一点就是内存问题,POJ卡的很紧我字典树开到600000就超了500000就A了……还有就是我的AC自动机跑的很慢啊954ms差点TLE,反正时间和空间有各种要小心的问题自己注意就行了。[代码]:View Cod
阅读全文
posted @
2012-02-21 23:25
procedure2012
阅读(534)
推荐(0)
[POJ3390 Print Words in Lines]
摘要:[关键字]:动态规划[题目大意]:把n个数字分成若干段,每段加上空格不能超过m,每段的代价是(m-sum)2求出最小代价。//=====================================================================================================[分析]:一开始向到了一道USACO的题,想以分成的段为状态,发现不行。然后想到了一个二维的递推式:f[i][j]=min{f[i-1][k]+sum(k,j)}前j个数分成i段的最小值就是前k个数分成i-1段的值中取最小。写着写着发现自己二了……其实一维就完了:f[i]
阅读全文
posted @
2012-02-21 23:14
procedure2012
阅读(195)
推荐(0)
[POJ2749 Building roads]
摘要:[关键字]:2-sat[题目大意]:把n个数由s1、s2两个点连接,有些店不能连在同一个点上,有些点必须连在同一个点上,问罪大边最小为多少,无解输出-1//=====================================================================================================[分析]:其实一部分很好想到:A为连在s1A’为连在s2,由此可构建2-sat图。但是我在这里犯了个错误:因该连A->B'\A'->B\B->A'\B'->A(只是以不能在同一个点的情况
阅读全文
posted @
2012-02-11 00:02
procedure2012
阅读(269)
推荐(0)
[POJ2723 Get Luffy Out]
摘要:[关键字]:2-sat[题目大意]:有n组钥匙,每组只能用一把;m扇门只能按顺序开,每个门需两把钥匙任选一把开,问罪多开几扇门。//=====================================================================================================[分析]:我一开始建图建错了,是把每扇门中的两把钥匙分别和与对方在同一组里的钥匙连边,结果过了样例。但后来看题解发现是对于这一题,有两类边:1。有N对点 (A,B)表示钥匙A,B只能用一把,加点A',B',建边<A,B'>表示,用
阅读全文
posted @
2012-02-08 23:59
procedure2012
阅读(373)
推荐(0)