[HDU3687 National Day Parade]
摘要:[关键字]:枚举+贪心[题目大意]:给出N*M的矩阵和N*N个点,所有点只能左右移动,问将所有点排列成矩形的最小步数。//=====================================================================================================================================[分析]:枚举所构成的矩形的左边界,然后同一行上的每个点一定是按从y值从小到大往枚举的矩形里走,所以先将所有点按x为第一关键字y为第二关键字排序,然后按顺序移入枚举的矩形并计算出步数求最小。[代码]:View C
阅读全文
posted @
2012-02-28 18:47
procedure2012
阅读(266)
推荐(0) 编辑
[HUD3682 To Be an Dream Architect]
摘要:[关键字]:数据结构[题目大意]:给出一个n*n*n的立方体,然后回有m个操作,要求删去某一列,问最后删去了多少个小立方体。//====================================================================================================================================[分析]:对于每个操作,枚举另一个坐标,然后以x*100*1000+y*1000+z*1给坐标为(x,y,z)的立方体编号,建立Hash表查找是否已经被删过。[代码]:View Code #include&l
阅读全文
posted @
2012-02-28 18:40
procedure2012
阅读(208)
推荐(0) 编辑
[USACO3.4.1 Closed Fences]
摘要:[关键字]:计算几何[题目大意]:给出N个点,先判断这些点能否构成一个边与边不相交的多边形,然后在判断站在给出点能看见哪几条边。//================================================================================================================================[分析]:第一问比较简单,只要判断规范相交就行了,利用叉积可以很容易的判断,祥见黑书。第二问可以用二分法解决,每次都找一条边的中点然后判断从给定点到中点是否和别的边相交,如果相交就二分判断能否看到左边或右边的部分
阅读全文
posted @
2012-02-28 18:31
procedure2012
阅读(399)
推荐(0) 编辑
[NOI模拟题7T2 Sort]
摘要:[关键字]:数据结构 Splay[题目大意] :有一个数字序列,按照如下顺序进行排序:在第i次交换时找到第i小的数字所在的位置k然后将[i,k]区间反转。问第i次反转前第i小的数字所在的位置。//==============================================================================================[分析]:既要支持反转操作又要快速查找的数据结构一定是——伸展树!但一开始我没想好怎么用,为了维护序列的顺序必须以原序列下标为关键字建立Splay,但是这样就无法快速查找第i小的数的位置,然后我就冥思苦想了一天发现自
阅读全文
posted @
2012-02-27 23:01
procedure2012
阅读(261)
推荐(0) 编辑
[USACO3.3.3 Camelot]
摘要:[关键字]:图论 搜索(有个BFS,有剪枝的思想)[题目大意]:有一个国王和若干个骑士,国王可以在某一个遇到骑士的点和骑士一起走,要求自己找一个集合点使所有人(骑士+国王)走到这个点的距离最小。//====================================================================================================[分析]:usaco的官方题解没看懂……自己也没做出来……我一开始的想法是先处理出每个点到所有骑士的距离和e[u],然后枚举起点u,枚举骑士接国王的点v,枚举哪个骑士接国王k,然后ans=min(e[u
阅读全文
posted @
2012-02-26 20:17
procedure2012
阅读(388)
推荐(0) 编辑
[USACO3.3.2 Shopping Offers]
摘要:[关键字]:动态规划[题目大意]:你要买n种商品,每种买k件。同时有一些组合购买的优惠方案,问最小花费。//====================================================================================================[分析]:因为最多才有五种商品,每种最多5件,所以五维的动态规划完全可以接受。至于方程太麻烦了,不写了,代码里很清楚……[代码]:View Code /*ID:procedure2PROB:shoppingLANG:C++*/#include<iostream>#include&
阅读全文
posted @
2012-02-26 19:58
procedure2012
阅读(183)
推荐(0) 编辑
[USACO3.2.5 Magic Squares]
摘要:[关键字]:搜索[题目大意]:给出一个魔版的目标状态,求利用A、B、C三种操作用最小步数有初始状态走到的序列(字典序最小)。//================================================================================================================[分析]:利用BFS扩展,Hash判重,还可用康托展开,但我不会……这个我是在不想说什么,就是超级简化版的八数码……[代码]:View Code /*ID:procedure2PROB:msquareLANG:C++*/#include<io
阅读全文
posted @
2012-02-25 18:43
procedure2012
阅读(311)
推荐(0) 编辑
[USACO3.2.4 Feed Ratios]
摘要:[关键字]:数学 解方程组[题目大意]:给出一种目标饲料的比例,和三种其他饲料的比例,问用这三种饲料各多少能混合出目标饲料多少,要求总用量最小。//=============================================================================================================================================[分析]:其实一点都不难,以样例为例。目标为3:4:5,其余三种为1:2:3 3:7:1 2:1:2,设第一种用x,第二种用y,第三种用z,得到k目标。可得方程组:1x+
阅读全文
posted @
2012-02-25 18:33
procedure2012
阅读(398)
推荐(0) 编辑
[USACO3.2.3 Spinning Wheels]
摘要:[关键字]:模拟 枚举[题目大意]:有5个轮子,每个轮子优r个缺口并且会按一定速度不停转动,问什么时候可以使一条光线射过所有轮子。//======================================================================================================================================[分析]:从0到1000(或其他的)枚举分钟然后判断,当前分钟是否有解。如果有解就输出并结束否则继续直到枚举完所有分钟还没找到解就是无解的情况。usaco第3章还有这么水的题……[代码]:View
阅读全文
posted @
2012-02-25 18:18
procedure2012
阅读(317)
推荐(0) 编辑
[HDU3691 Nubulsa Expo]
摘要:[关键字]:图论 网络流 最小割[题目大意]:给出一个无向图,给定源点和每条边流量,找出一个汇点使得最大流最小//==============================================================================================================================================[分析]:可以看出要然流量最小且汇点可以自己定,所以就可以求出一个最小割,然后随便在T集中找一个点当汇点就行了,所以此题转化成求全图最小割的问题。用枚举+最大流即使是三秒的时限也肯定超时,所以要用SW算
阅读全文
posted @
2012-02-24 18:51
procedure2012
阅读(544)
推荐(0) 编辑
[NOI2002 贪吃的九头龙]
摘要:[关键字]:树形DP[题目大意]:N个节点的一棵树被M个脑袋吃,每个脑袋至少吃一个。最大的头必须恰好吃K个且必须包括1号节点。如果一条树边的两边都是被同一个脑袋吃掉的,则这段树枝的权值将被计算进答案中,要求使答案最小。//====================================================================================================================================================[分析]:无解好判断,N-K<M-1则无解(果子不够吃)。但一看非无解情况M
阅读全文
posted @
2012-02-23 18:56
procedure2012
阅读(1150)
推荐(1) 编辑
[POJ3988 Selecting courses]
摘要:[关键字]:贪心[题目大意]:有N个课程,每个课程只能在[ai,bi)!!!的时间内选,且每五分钟只能选一次,问最多可以选几个。//====================================================================================================================================================[分析]:因为只能是隔五分钟才能选,也就是说只要起始时间,所有可以选课的时间点就已经确定,又因为每五分钟可以选一次所以从0开始到从5开始是一样的且0更优,所以从0~4枚举起
阅读全文
posted @
2012-02-23 08:53
procedure2012
阅读(311)
推荐(0) 编辑
[POJ3989 A hard Aoshu Problem]
摘要:[关键字]:搜索[题目大意]:给出一个形如ABCDE+DACEB=BC的式子,每个字母代表一个数字,求出可能的方案有多少。//=====================================================================================================================================================[分析]:虫食算的超级简化版……只有5个字母,暴力搜索就可以过……注意不要忽略细节:除数不能为0,判断除法是否成立最好用乘法判断……[代码]:View Code #includ
阅读全文
posted @
2012-02-23 08:41
procedure2012
阅读(299)
推荐(0) 编辑
[NOI2001 炮兵阵地]
摘要:[关键字]:动态规划 状态压缩[题目大意]:在给定的地图上有高地和平原,只能在平地上放置炮兵,每个炮兵可以攻击到前后左右各延伸两格(无视地形),在保证不互相攻击的前提下最多能放置几个炮兵。//=====================================================================================================================================================[分析]:可以用动态规划解决,由于M最大只有10所以可以用二进制来表示每一行的状态,然后逐行转移。0代表不放,
阅读全文
posted @
2012-02-23 08:30
procedure2012
阅读(613)
推荐(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
阅读(527)
推荐(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
阅读(190)
推荐(0) 编辑
[HNOI2011 任务调度]
摘要:[关键字]:随机化算法 模拟退火[题目大意]:http://221.192.240.123:8586/JudgeOnline/showproblem?problem_id=1677//======================================================================================================================================================[分析]:本来还想把它独立做出来,结果碰着这么一道“RP完全问题”,在冥思苦想了几个小时的搜索、贪心、动态规划都无果
阅读全文
posted @
2012-02-20 18:44
procedure2012
阅读(1021)
推荐(0) 编辑
[NOI2011Day2 兔兔与蛋蛋游戏]
摘要:[关键字]:二分图[题目大意]:http://192.168.1.9:8586/JudgeOnline/showproblem?problem_id=1672[分析]:这是一道二分图匹配的问题,先说说我的思路:每次与空格的交换只能是黑白交替,所以可以看成空格在黑格和白格间交替的走。于是棋盘就变成了一个二分图,黑格向他周围的白格连边,白格同理,空格一开始为黑色然后黑白交替变色,每次走一步都对交换的两个点重新连边。至于判断必胜或必败,如果空格沿着当前二分图不回头的走到了黑格,则白胜否则黑胜。然后我就纠结了,这里面有许多思路不清晰的地方也有许多很难完成的地方复杂度也没有保证。然后看了题解,发现自己其
阅读全文
posted @
2012-02-18 09:04
procedure2012
阅读(690)
推荐(0) 编辑
[NOI2011Day2 道路修建]
摘要:[关键字]:Bfs[题目大意]:http://221.192.240.123:8586/JudgeOnline/showproblem?problem_id=1670//=====================================================================================================[分析]:其实很水,因为树都已经给出只要任选一个根建树,记录以每个点位根的子树有多少节点,每条边的费用就是a[i].d*abs((N-f[i].d)-f[i].d)f[i].d是以i为根的子树的节点数a[i].d是边的长度。因为
阅读全文
posted @
2012-02-17 13:23
procedure2012
阅读(841)
推荐(0) 编辑
2012信息学冬令营之行
摘要:Day0初到江苏(其实算上以前也不算初到了),感觉不错。常州一看就是一个典型的江南城市,没有北方的萧瑟肃杀,没有北方的寒风凛冽,绿色仍是随处可见,温度也恰到好处,总给人一种温和的、慢吞吞的闲适感觉,很喜欢!这里的人说话也是和北方不同(吴侬软语嘛),尤其是一吃惊就“啊呀呀,天哪!天哪!……”而且更重要的……MM很多呀!省常中(江苏省立常州高级中学)也是很漂亮,大气典雅的建筑,和谐的布局,优美的环境(尤其是就在一墙之隔的地方就是公园还有一座漂亮的古塔),虽然不见得有多大但确实给人的感觉相当好,报告厅、图书室、教室、办公室、文体中心、大操场……相当不错!但这和去衡中、邯郸四中还是不同,虽然都觉得学校
阅读全文
posted @
2012-02-16 13:56
procedure2012
阅读(2498)
推荐(2) 编辑
[HNOI2011 DAY1 数学作业]
摘要:[关键字]:矩阵加速 递推[题目大意]:http://221.192.240.123:8586/JudgeOnline/showproblem?problem_id=1673//=====================================================================================================[分析]:其实就可以一个一个的除,求出的余数和下一个数连起来就是下一个要除的数:f[i]=f[i-1]*10k+i,f[i]是前i个数连起来时的余数,k是第i个数的位数。这个递推式是O(n)的回超时,但可以用矩阵乘法+快
阅读全文
posted @
2012-02-16 13:54
procedure2012
阅读(593)
推荐(0) 编辑
[NOI2011 智能车比赛]
摘要:[关键字]:计算几何[题目大意]:http://221.192.240.123:8586/JudgeOnline/showproblem?problem_id=1668//=====================================================================================================[分析]:计算几何题,需要有清晰的思维(本人就是一开始没想清楚)。从每一个矩形的顶点包括起点开始检查能不能到其它点,并记录长度。因为最短路径上的点一定是在矩形的顶点上,而且因为是不断往前走,所以可以用dp来做最短路。检查方法就
阅读全文
posted @
2012-02-16 13:49
procedure2012
阅读(981)
推荐(0) 编辑
[NOI2011阿狸的打字机]
摘要:[关键字]:AC自动机[题目大意]:http://221.192.240.123:8586/JudgeOnline/showproblem?problem_id=1669//=====================================================================================================[分析]:一开始,就是暴力KMP,对每一个询问利用KMP查询一下出现过多少次,统计得到40分。后来学了AC自动机又听说用它可以拿30分,本来想试试结果……0……看了题解才发现自己完全没有掌握AC自动机的精髓。这道题是用AC自
阅读全文
posted @
2012-02-15 00:49
procedure2012
阅读(1583)
推荐(1) 编辑
[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
阅读(265)
推荐(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
阅读(368)
推荐(0) 编辑
[POJ1743 Musical Theme](USACO5.1.3)
摘要:[关键字]:后缀数组[题目大意]:找到一个字符串内长度不小于五的最长不重复字串,字串的所有数字同时加上或减去一同一个数也算重复出现。这时usaco5.1.3的原题但数据范围变大了。//=====================================================================================================[分析]:首先最所有数字作差,原数据为f[i]新数据为s[i]=f[i-1]+f[i],这样一来及时原先的字串是进行过加或减那他们的差值也会相同,所以转换为求现有s[]中大与5的最长重复字串,用后缀数组。首先由二分
阅读全文
posted @
2012-02-04 17:30
procedure2012
阅读(1966)
推荐(0) 编辑
[POJ2774 Long Long Message]
摘要:[关键字]:字符串 后缀数组[题目大意]:问两个字符串的最长公共子串。//=====================================================================================================[分析]:首先将两个字符连在一起,并在中间加入'$'分割,然后两个串的最长公共字串就变成了所有后缀的最长公共前缀。这时就要用到height数组,因为任意两个后缀的公共前缀必定是某些height值中的最小值,而这个值如果最大则一定是height中的最大值。在此题中还要注意height最大一定要在两个值所代表的
阅读全文
posted @
2012-02-04 17:06
procedure2012
阅读(662)
推荐(0) 编辑
[POJ3648 Wedding]
摘要:[关键字]:2-sat[题目大意]:http://poj.org/problem?id=3648//=====================================================================================================[分析]:http://blog.csdn.net/l04205613/article/details/6673512这个博客对于2-sat的题目总结的不错。[代码]:View Code #include<iostream>#include<cstring>#include
阅读全文
posted @
2012-02-04 16:46
procedure2012
阅读(204)
推荐(0) 编辑
[POJ3683 Priest John's Busiest Day]
摘要:[关键字]:2-sat[题目大意]:有n场婚礼,牧师可以在每场婚礼开始后的di分钟主持,也可以在结束前的di分钟主持,问是否有一种方案可以让牧师主持所有婚礼。//=====================================================================================================[分析]:2-sat求解方案的问题。把每场婚礼看成一组点(A,A'),然后对所有有矛盾的点处理:A->B'(A与B有矛盾)、A->B(A与B’有矛盾)……,然后利用2-sat求解,具体方法可见《由对称性解2-
阅读全文
posted @
2012-02-04 16:28
procedure2012
阅读(438)
推荐(0) 编辑
[2012寒假回顾]
摘要:一、图论(1)、网络流SAP#include<iostream>#define INF 100000using namespace std;struct node{ int y,d; node *next,*op;};static int n,m,tot=0,ans=0,s,t,sum=0;static node *link[1000],e[9000];static int h[1000],num[1000];void add(int x,int y,int d){ tot++; e[tot].y=y; e[tot].d=d; e[tot...
阅读全文
posted @
2012-02-02 12:19
procedure2012
阅读(255)
推荐(0) 编辑