need to review
focus_best
这个作者很懒,什么都没留下…
展开
-
POJ 3667 Hotel(线段树:区间覆盖,维护最大连续子区间)
POJ 3667 Hotel(线段树:区间合并)分析: 首先本题类似于UVA1400 ,所有区间合并类的线段树基本都需要维护3类信息:最大区间,最大前缀,最大后缀. 维护一棵线段树,该线段树每个节点维护信息:在该节点所代表的区间内的覆盖情况cover: 为0时表示没有被覆盖,为1时表示被覆盖了,为-1时表示子节点中既有被覆盖的也有没被覆盖的.最长连续区间长度原创 2014-03-28 16:46:52 · 2115 阅读 · 0 评论 -
POJ 1780 Code(欧拉回路+模拟栈)
POJ 1780 Code(欧拉回路+模拟栈)http://poj.org/problem?id=1780题意:(题意较复杂)大致思想是给你一个n,表示一个由0-9数字构成的n位密码.这个解锁过程如下:锁一直读入所有内容.只要当它最后读入的n个数字与密码吻合,那么就表示解锁了.现在要你输出一个长度为10^n+n-1的数字序列,这个数字序列包括了n位密码的所有可能.(也就是说输入这个序列,必原创 2014-06-11 13:36:54 · 1649 阅读 · 0 评论 -
HDU 4763 Theme Section(KMP:后缀与前缀)
HDU 4763 Theme Section(KMP:后缀与前缀)http://acm.hdu.edu.cn/showproblem.php?pid=4763题意:给你一个字符串T,要你在中间找一段连续的串,使得该串与T的前缀相同,并且和T的后缀相同.(但是不重叠)分析: 首先我们要知道KMP算法可以用来求T串的next[i],next[i]=x表示以第i-1字符结尾的原创 2014-04-05 18:36:51 · 829 阅读 · 0 评论 -
POJ 1990 MooFest(树状数组+离线处理)
POJ1990 MooFest(树状数组+离线处理)分析:因为要求max(vi,vj),所以先读入所有的牛,将牛按它的vi值从小到大排序,所以当前处理的牛总是vi值最大的。接下来就要算当前第i头牛的坐标xi和之前出现的所有牛的坐标之差的总和了。维护两个树状数组,数组1的sum(1,x)表示的是坐标值那么假设当前处理第i头牛,维护当前已经处理了的所有牛的坐标和total,并执行:ad原创 2014-03-20 21:20:59 · 1095 阅读 · 0 评论 -
POJ 2481 Cows(树状数组)
POJ2481 Cows(树状数组)分析:对于任意两头牛i和j,只有当Si Ej – Sj时,i才比j强壮,即:如果将所有牛的E区间按从大到小排序(如果E相同,则S小的排在前面)的话,那当前读取到第i个牛的Si和Ei,那么之前(假设任意牛的区间不会完全相同)的牛的Sj(j所以我们首先对读取到的区间排序,然后可以用树状数组利用牛的S坐标来算出结果(这个算结果要有点注意,如果两个区间完全原创 2014-03-15 13:52:10 · 1144 阅读 · 0 评论 -
HDU 3874 Necklace(树状数组+离线处理)
HDU 3874 Necklace(树状数组+离线处理)分析:预处理:首先我们需要一个树状数组A[n],我们从左到右读入所有的a[i],如果当前a[i]=x值是第一次出现,就执行add(i,x),否则不执行.当我们扫描完了n个值后,我们保证sum(R)就是区间[1,R]的答案.(想想是不是) 接下来我们对所有查询的区间进行排序,使得[L,R]区间中L小的区间排在前面.我们首原创 2014-03-19 17:52:13 · 1144 阅读 · 0 评论 -
HDU 1816 Get Luffy Out *(2-SAT)
HDU 1816 Get Luffy Out *(2-SAT)http://acm.hdu.edu.cn/showproblem.php?pid=1816题意:你有2N把钥匙,你的前面按顺序有M个门,每个门有两个锁,现在你必须用这2N把钥匙去开门. 一个门只要一把锁被打开了这个门就可以被打开.且2N把钥匙还有N个配对关系,每一对的两把钥匙i与j,如果用了i钥匙,那么j钥匙永远不能再用.如果原创 2014-07-02 17:08:26 · 852 阅读 · 0 评论 -
POJ 1392 Ouroboros Snake(数位欧拉:输出路径)
POJ 1392 Ouroboros Snake(数位欧拉:输出路径)http://poj.org/problem?id=1392题意:一个n位的二进制数一共有2^n个,现在要你用一个长度为2^n的模板二进制数(且要求字典序最小)来”生成所有n位的二进制数”,具体生成过程如下:从0号位置到2^n-1位置开头依次取模板二进制数的连续(如果到了尾部,就从头部循环取)n位二进制数,我们要求这原创 2014-06-11 22:10:24 · 1054 阅读 · 0 评论 -
POJ 2942 Knights of the Round Table(双连通分量+二分图)
POJ 2942 Knights of the Round Table(双连通分量+二分图)http://poj.org/problem?id=2942题意: 亚瑟王要在圆桌上召开骑士会议,为了不引发骑士之间的冲突,并且能够让会议的议题有令人满意的结果,每次开会前都必须对出席会议的骑士有如下要求:1、 相互憎恨的两个骑士不能坐在直接相邻的2个位置;2、 出席会议的骑士数必须是奇原创 2014-06-16 22:56:48 · 797 阅读 · 0 评论 -
UVA 1479 Graph and Queries(Treap:名次树+并查集)
UVA 1479 Graph and Queries(Treap:名次树+并查集)题意:给你一个无向图,每个顶点具有权值,现在对图进行操作,你需要输出最后查询操作的平均值.有查询,删除边,改变点的权值三种操作.分析:刘汝佳训练指南P234例题. 首先读入所有的操作,点以及边.由于只需要我们输出最后的一个平均结果,所以我们把这些操作逆序处理,使得从图中删除边,变成往图中添加边原创 2014-04-21 18:58:25 · 1572 阅读 · 0 评论 -
POJ 2991 Crane(线段树:维护向量+计算几何)
POJ 2991 Crane(向量旋转+线段树_成段更新)分析: 首先一个向量(x,y)逆时针绕起点旋转rad度后得到的向量为:newx = x*cos(rad)-y*sin(rad) newy = x*sin(rad)+y*cos(rad)然后我们要知道另外一个事实:如果一条折线由多个向量构成,那么这条折线段的终点坐标一定为起点+向量1+向量2+..+向量n的结果原创 2014-03-28 02:13:00 · 1631 阅读 · 1 评论 -
POJ 1436 Horizontally VisibleSegments(线段树:区间覆盖染色)
POJ 1436 Horizontally VisibleSegments(线段树:成段更新+区间开闭)分析:1. 首先读入所有的线段,然后按x轴坐标从小到大排序,然后我们一次处理每条线段,用一个二维矩阵mark[i][j]保存第i条线段和第j条线段之间的关系.(如果相互可以看到,则mark为true,否则为false). 2. 下面的问题是如果求出任意两线段之间的可见原创 2014-03-27 19:26:25 · 1503 阅读 · 1 评论 -
POJ 3225 Help with Intervals(线段树:区间置0/1,区间异或)
POJ3225 Help with Intervals(线段树:成段更新,开闭区间)分析:找到几个小BUG,直接AC了,还是需要写出自己的所有思路,才比较好写代码. 首先这道题目要处理区间,所以我们在线段树的各个节点用0表示不包括,1表示包括,-1表示子节点中既有包括又有不包括.下面分析对应的5种操作,假设T表示的区间是[l,r]:U T: [l,r]区间置1I T: [0,l原创 2014-03-27 13:57:00 · 3555 阅读 · 0 评论 -
POJ 3693 Maximum repetitionsubstring(后缀数组:循环子串)
POJ 3693 Maximum repetitionsubstring(后缀数组:循环子串)http://poj.org/problem?id=3693题意:给你一个长N的字符串,现在要你找出该字符串中具有最大循环节数目的连续子串,如果有多个答案输出字典序最小的.分析: 罗穗骞《后缀数组——处理字符串的有力工具》论文例题,不过论文中讲解的比较难懂.本题是SPOJ687的加强版,可原创 2014-04-18 01:19:34 · 743 阅读 · 0 评论 -
POJ 3687 Labeling Balls(拓扑排序)
POJ 3687 Labeling Balls(拓扑排序)http://poj.org/problem?id=3687题意:给你N个球,编号从1到N.且这N个球的重量各不相同,且他们的重量正好是从1到N个单位.现在还给出了M个关系,每个关系描述了两个不同编号球之间的重量关系.现在要你输出这N个球可能的重量,从1号球到N号球.如果存在多解,则输出1号球最轻的解.如果1号球最轻时依然有多解,那原创 2014-06-13 22:28:42 · 741 阅读 · 0 评论 -
POJ 1135 Domino Effect(Dijkstra)
POJ 1135 Domino Effect(Dijkstra)http://poj.org/problem?id=1135题意: 有一些多米若骨牌,其中有一些关键牌.(这些关键牌可以看成无向图的顶点,关键牌之间的普通牌看成是无向图的边). 然后构成了一个具有n个点,m条边的无向图,每条边有行走时间.现在问你最后倒下的骨牌是不是关键牌,且时间是多少?分析: 最后倒下的骨原创 2014-07-08 12:48:55 · 742 阅读 · 0 评论 -
POJ 1190 生日蛋糕(DFS:优化剪枝)
POJ 1190 生日蛋糕(DFS:优化剪枝)http://poj.org/problem?id=11907月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。 设从下往上数第i(1 Ri+1且Hi > Hi+1。 由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。 令Q = Sπ原创 2014-05-12 21:28:40 · 1285 阅读 · 0 评论 -
HDU 2485 Destroying the bus stations(费用流)
HDU 2485 Destroying the bus stations(费用流)http://acm.hdu.edu.cn/showproblem.php?pid=2485题意: 给你一个n个节点m条边的有向图,从1号节点到n号节点没有直接的边,然后问你最少需要删除几个节点,才能使得该有向图没有从1号节点到n号节点长度分析: 其实本题求得就是该网络流图原创 2014-09-09 23:28:03 · 1055 阅读 · 0 评论 -
POJ 3680 Intervals(离散化+费用流)
POJ 3608 Intervals(离散化+费用流)http://poj.org/problem?id=3680题意: 给定n个带权开区间,选择其中一些区间出来,使得权值最大并且在任意被选区间的有效点上重叠层数不超过k。分析: 本题用费用流解,下面先说说如何建图然后在画图分析为什么这么建图能得到解,将所有区间的前后两个端点离散化为n个不重复的点,然后建原创 2014-09-04 13:14:07 · 1150 阅读 · 0 评论 -
POJ 3084 Panic Room(最小割)
POJ 3084 Panic Room(最小割)http://poj.org/problem?id=3084题意: 有一些房间,初始时某些房间之间有一些门,并且这些门是打开的,也就是可以来回走动的,但是这些门是确切属于某个房间的,也就是说如果要锁门,则只有在那个房间里才能锁。 现在一些房间里有一些恐怖分子,要搞破坏,但是我们现在有个房间很重要,不能被他们破坏,这就需要锁一部原创 2014-09-02 21:26:47 · 789 阅读 · 0 评论 -
POJ 1637 Sightseeing tour(最大流)
POJ 1637 Sightseeing tour(最大流)http://poj.org/problem?id=1637题意: 判断混合图是否存在欧拉回路.(即既有有向边,又有无向边的图)分析: 把该图的无向边随便定向,计算每个点的入度和出度。如果有某个点出入度之差为奇数(改变任意一条无向边的方向可以使得其关联的两个点的入度和出度度数改变2,即偶度永远是原创 2014-08-25 20:58:27 · 1016 阅读 · 0 评论 -
POJ 1149 PIGS(最大流)
POJ 1149 PIGS(最大流)http://poj.org/problem?id=1149题意: 有M个猪圈,每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了N个顾客,每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。问原创 2014-08-25 16:38:42 · 906 阅读 · 0 评论 -
POJ 1011 Sticks(DFS回溯剪枝)
POJ 1011 Sticks(DFS回溯剪枝)http://poj.org/problem?id=1011题意:给你N根长度可能不同的小棍子,它们是由M根长棍子切断而成的,M未知.现在要你求出原始棍子的最小合法长度是多少?分析:本题是POJ2362的加强版:http://blog.csdn.net/u013480600/article/details/27581015原创 2014-05-30 16:12:54 · 1122 阅读 · 0 评论 -
POJ 2699 The Maximum Number of Strong Kings(最大流)
POJ 2699 The Maximum Number of Strong Kings(最大流)http://poj.org/problem?id=2699题意: 一场联赛可以表示成一个完全图,点表示参赛选手,任意两点u, v之间有且仅有一条有向边(u, v)或( v, u),表示u打败v或v打败u。一个选手的得分等于被他打败的选手总数。一个选手被称为“strong kin原创 2014-08-27 14:35:00 · 1388 阅读 · 0 评论 -
Manacher算法,O(n)回文子串算法
Manacher算法,O(n)回文子串算法 这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法.原文地址:http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algorithm-for-finding-longest-palindrome-sub-string/ 其实原文说得转载 2014-04-07 00:49:26 · 1414 阅读 · 0 评论 -
HDU 2819 Swap(二分图匹配)
HDU 2819 Swap(二分图匹配)http://acm.hdu.edu.cn/showproblem.php?pid=2819题意: 给定一个矩阵,矩阵元素取值为0或1,每次操作可以交换任意两行或两列,要求对于给定矩阵给出操作次数和操作序列将主对角线(A[i][i],i=1...n)元素全部变为1,无法满足则输出-1.分析: 首先如果一个矩阵对于上原创 2014-08-17 21:25:33 · 1106 阅读 · 0 评论 -
POJ 2226 Muddy Fields(最小覆盖数)
POJ 2226 Muddy Fields(最小覆盖数)http://poj.org/problem?id=2226题意: 农夫John的养牛场,是一个R 行C 列的矩形,一场大雨后,养牛场低洼的地方都有了积水。John 的牛都很娇贵的,他们吃草的时候,不想把他们的蹄子给弄脏了。为了不让牛儿们把它们的蹄子弄脏,John 决定把有水的地方铺上木板。他的木板是宽度为1,长度没有原创 2014-08-16 21:01:55 · 653 阅读 · 0 评论 -
HDU 4263 Red/Blue Spanning Tree(最小生成树)
HDU 4263 Red/Blue Spanning Tree(最小生成树)http://acm.hdu.edu.cn/showproblem.php?pid=4263题意: 有一个N个顶点和M条边的无向图,每条边不是红色就是蓝色的,现在问你是否存在该图的一个生成树,该树正好包含了K条蓝色的边以及n-1-K条红色的边?分析: 首先我们只用蓝边来构成生成树原创 2014-07-22 17:56:24 · 1287 阅读 · 2 评论 -
POJ 1932 XYZZY(Floyd传递闭包+BellmanFord判环)
POJ 1932 XYZZY(Floyd传递闭包+BellmanFord判环)http://poj.org/problem?id=1932题意:有N个房间,编号从1到N.现在你初始有100点血,从1号房间出发,你必须走到N号房间才赢.不过每间房间有一个值,如果为正,你加上相应的血量.如果为负,你扣去相应的血量.现在问你是否能到达N房间且中途血量必须大于0.分析: 本题很原创 2014-07-15 22:30:59 · 858 阅读 · 0 评论 -
SPOJ 687. Repeats(后缀数组)
SPOJ 687. Repeats(后缀数组)题意:给你一个长N的字符串,现在要你找出该字符串中具有最大循环节数目的连续子串.输出该子串的循环节数目即可.分析:罗穗骞《后缀数组——处理字符串的有力工具》论文例题,不过论文中讲解的比较难懂.首先还是引用论文的那段:首先要明白上图其实就是用KMP算法自匹配循环节的标准图形.难懂的地方在这里:1. 什么时候可以往左匹配?原创 2014-04-18 00:11:14 · 1441 阅读 · 1 评论 -
HDU 3450 Counting Sequences(树状数组+DP+离散化)
HDU 3450 Counting Sequences(树状数组+DP+离散化)分析:对于一个给定的序列a[n],令d[k][i]表示长度为k且以第i个元素为结尾的完美序列的个数。那么:d[2][i]+= sum{ d[1][j] | 1d[2][i]+= sum{ d[2][j] | 1我们最终所求是d[2][1]+d[2][2]+…d[2][n].由上面分析可知,快速的计算原创 2014-03-18 22:52:12 · 1361 阅读 · 0 评论 -
HDU 2838 Cow Sorting(树状数组)
HDU 2838 Cow Sorting(树状数组)分析:首先每次只能交换相邻的两头牛,并且最后要求升序排列,所以最后整个序列的逆序是0,每次交换只可以消除1个逆序。(令a[i]的逆序是从1到i-1比它大的数的个数。)现在想问我们用插入排序的方式从左到右一个一个消除逆序的话,最后得到的时间和是最小的吗?是的。证明如下:对于每个原始的a[i],假设在它前面有x和y比a[i]大,所以a原创 2014-03-20 00:08:39 · 1082 阅读 · 0 评论 -
HDU 3613 Best Reward(扩展KMP:回文判断)
HDU 3613 Best Reward(扩展KMP:回文判断)http://acm.hdu.edu.cn/showproblem.php?pid=3613题意:给你一个字符串,要你把这个字符串分成两段,并使得被分开的两段价值和最大.一个串如果是回文,那么它的价值就是所有字符的价值和,否则价值为0.分析: 首先原始串为S,将S逆转得到串T.(S=abcaaa,那么T=a原创 2014-04-06 20:22:48 · 2494 阅读 · 0 评论 -
POJ 1456 Supermarket(贪心算法,可用并查集优化)
POJ 1456 Supermarket(贪心算法)分析:对于当前集合中最大利益的商品肯定要安排,且要安排在它的截止时间点卖出.可以证明上述选择不会丢失最优解,因为首先最大利益的商品一定不能放弃,否则可以用这个商品替代它截止时间上卖的那件商品.其次如果存在最优解使得最大商品放在它截止时间点前面买,此时它截止时间上卖的是另外一个商品,那么互换这两件商品,依然是最优解.将所有商品按利润从大原创 2014-03-12 17:19:59 · 1386 阅读 · 0 评论 -
HDU 3308 LCIS(线段树:单点更新,求最大连续子串)
HDU 3308 LCIS(线段树:单点更新,区间合并)分析: 首先题目中找的递增序列是严格增加的,如果有7,7这样的序列不算递增.其次本题是单点更新,所以不用PushDown,只用PushUp就行. 线段树维护信息:val(表节点的值,只有子节点有用,这个信息也可以不维护的),sub(最长上升子序列的长度),pre(最长上升前缀的长度),suf(最长上升后缀的长原创 2014-03-28 18:58:10 · 2475 阅读 · 0 评论 -
POJ 2452 Sticks Problem(二分+RMQ)
POJ 2452 Sticks Problem(二分+RMQ)分析:首先知道,当给出的序列是递减的(不用严格递减)话就一定不存在给定的序列. 然后用二分法假设我们当前猜测存在长度为temp的要求序列,所以我们需要去验证是否存在这样的序列. 首先可以尝试用队列扫描的方式,一个一个的读入a[i],然后设定L为左合法边界(即最小值a[L]),然后判断当前读入的a[i]是否合法(即原创 2014-03-24 01:15:59 · 1391 阅读 · 0 评论 -
POJ 1849 Two(遍历树)
POJ 1849 Two(遍历树)http://poj.org/problem?id=1849题意: 有一颗n个结点的带权的无向树, 在s结点放两个机器人, 这两个机器人会把树的每条边都走一遍, 但是最后机器人不要求回到出发点. 问你两个机器人走的路总长之和的最小值是多少?分析: 首先本题只要求出树的直径, 然后用树的总长sum*2-树的直径就是所求结果. 下面一步步来说明为什么是这样的. 1.假设只有1个机器人遍历树, 且要求回到原点, 它最少需要走多少路?原创 2014-11-02 15:50:16 · 1632 阅读 · 1 评论 -
HDU 2196 Computer(树形DP)
HDU 2196 Computer(树形DP)分析:求一个树中所有节点能到达的最远距离f[i]。要用两个dfs。首先第一个dfs求出所有每个节点i在其子树中的正向最大距离和正向次大距离和dist[i][0]和dist[i][1](如果i节点在子树中最大距离经过了2号儿子,那么次大距离就是不经过2号儿子的最大距离)。并且还要标记longest[i]=j表示节点i在其子树中的最大距离经过了节点原创 2014-03-22 22:38:46 · 4734 阅读 · 0 评论 -
POJ 3162 Walking Race(树形DP+单调队列)
POJ 3162 Walking Race(树形DP+单调队列)分析:首先这道题和HDU4123很像,不过这道题目数据规模很大,空间有限,不能用RMQ求解了,要用单调队列进行第二步处理。HDU4123:http://blog.csdn.net/u013480600/article/details/21834553 依然先树形DP,求出所有的d[i]距离,然后对于m找出最长的原创 2014-03-23 01:19:39 · 1216 阅读 · 0 评论 -
HDU 3193 Find the hotel(RMQ)
HDU 3193 Find the hotel(RMQ)分析: 首先本题与UVA 11020很相似,不过本题是xi且yi才算有优势,UVA11020 xi且yi<yj或 xi且yi<=yj就算有优势的.http://blog.csdn.net/u013480600/article/details/21948379 首先读入所有的旅店,然后对于每个原创 2014-03-24 13:56:26 · 1066 阅读 · 2 评论