摘要:
之后把自己从网上找到的题目放在这里,因为可能目前补数据结构,题目不能一下子切完网络流:网络流与线性规划24题线段树与矩形切割:POJ 20题线段树http://blog.renren.com/share/279182900/1290893180线段树还有这个http://www.notonlysuccess.com/index.php/segment-tree/单调队列+斜率优化http://www.notonlysuccess.com/index.php/dp_optimize/网络流的题目http://www.notonlysuccess.com/index.php/network/ 阅读全文
posted @ 2012-04-06 20:16
F.D.His.D
阅读(193)
评论(0)
推荐(0)
摘要:
POJ 3468题目之前的吐槽:最近记忆力真的差很多了,刚刚做完来写解题报告,题目编号已然不记得….题目大意:给出n个数,我们有两个操作,q,x,y:询问区间[x,y]的和,c,x,y,z:区间[x,y]里的每一个数+z。解:树状数组,线段树,以及discuss里说splay可做。做这题目前用的线段树。线段树的常数真心恶心,递归就算了,而且clear操作写成函数那个常数大得我不敢看了,可是不写成函数又会把自己恶心到。主要是靠一个lazy操作,有一个tag域,如果这个区间在增加的区间内,tag累加,tag表示这个区间要加的数,然后每进入一条线段,clear,更新sum,tag直0,并且把tag传 阅读全文
posted @ 2012-04-06 20:13
F.D.His.D
阅读(325)
评论(0)
推荐(0)
摘要:
POJ 1151题目大意:给出n个矩形(通过给出对角坐标确定),这些矩形间可能有重叠,求除去重叠后覆盖的面积是多少。解:矩形切割,只是用线段树去维护线段达到logn的效率。View Code 1 //poj 1151 2 const 3 maxn=1111; 4 inf='1.txt'; 5 type 6 type_node=record 7 mid, l, r, flag: longint; 8 x1, x2, cnt: double; 9 end; 10 ... 阅读全文
posted @ 2012-04-06 20:13
F.D.His.D
阅读(185)
评论(0)
推荐(0)
摘要:
POJ 2777题目大意:有len个区间,每次为[x,y]区间上色,然后有询问操作,问[x,y]区间上有多少种颜色。解:线段树维护,1wa是因为没看见x可以大于y并作出相应处理然后2wa3wa就是细节问题了,大体是l,r和s,e混淆。然后tle,是因为lazy写错了,正解应该是如果包含则直接改值,当以后如果在改的区间内,这个区间只有一个颜色的话,记得把原来的颜色递归给儿子,把c置0再递归处理(因为区间的划分决定了你目前所在的区间一定包含我们要涂改的区间的子区间,如果这个区间只有一个颜色那么新的子区间的插入就会改变这个情况,所以lazy标记置0,并一定要把原来的颜色递归下去!不然对这些子区间的询 阅读全文
posted @ 2012-04-06 20:10
F.D.His.D
阅读(171)
评论(0)
推荐(0)
摘要:
POJ 2528题目大意:同上,只是x,y属于[1,10000000],最后询问能在这个[1,10000000]区间上能看见多少种颜色。解:线段树+离散化,把可能的端点值存起来,排序,在对应回去,然后线段数即可,1re是因为tree数组的大小没有考虑到端点数*2而再*2,2tle是因为find写错了,然后3wa是因为离散化?这里是个重点,因为离散化之后比如[1,2][4,5],虽然中间有区间[3,3]但是如果按上文离散化则会出问题,奇怪的是我的处理+上这个判断,如果两个数之间有其他数,则再离散化多这个中间数,但是wa了,有空回来复习的时候检查一下,把特殊处理删除反而ac了,第二天过来看,看了别 阅读全文
posted @ 2012-04-06 20:10
F.D.His.D
阅读(200)
评论(0)
推荐(0)
摘要:
POJ: 3264题目大意:给出n个数,给出一个区间[x,y],求这个区间的最大最小值。解:可以用rmq的st算法,有空去切一下,这里用了线段树,入门,练习了构树和查询,不过自己对于左右端点的掌握还是需要犹豫。看到别人写了一个树状数组的写法,挺神的,有空写下,刷刷排名。研究了一下,对于修改删除的题不适用,改过则必须重新初始化。或者自己写一个链表?可能可以对付删除情况?线段树 1 //poj 3264 2 const 3 maxn=51111; 4 inf='1.txt'; 5 type 6 data=record 7 l, ... 阅读全文
posted @ 2012-04-06 20:09
F.D.His.D
阅读(351)
评论(0)
推荐(0)
摘要:
POJ 2942题目大意:有n位骑士,他们间有一些仇恨关系,如果有仇恨则开会的时候不能坐在两侧,求至少删除多少名骑士,使得总可以找出奇数个骑士和平地坐下来开会?解:我挺天真的,一开始就去研究它给出的关系图,想了好久才去建补图。发现如果是可以坐在一起的话补图上就是一个圈,任务就是找奇圈,然后自己草莽地写了一个边双连通分量算,wa,调了略久,没思路,看题解,发现是点双连通(边双连通内可能有关节点,但是点双连通内一定没有桥,所以如果只是算出边双连通可能会因当中包含关节点而出错),况且我也是理解错题意了,我以为是找最大奇圈,但实际上是把所有的可能都算出来。正解首先是求点双连通,没找到一个块,对这个块进 阅读全文
posted @ 2012-04-06 20:08
F.D.His.D
阅读(353)
评论(0)
推荐(0)
摘要:
POJ 1192Noi的题>.<题目大意:给出一些点,坐标都是整数,如果两个点的距离为1,则说明相邻..(省略繁琐题意),删点后连通……总之就是构建了一棵树,每个节点有一个权值,求这棵树的一颗子树,有权值最大。解:首先说下自己的二点,没看到树的性质(每两个点有且只有一条路径联通),然后刚刚切完一系列的双连通分量,很激动的用贪心,每次去除掉一个当前权值最小且非割点的的点=。=然后wa掉,检查半天,最后看discuss才知道完全是自己的题意理解错了,况且如果是图我这个是从本质上贪心不能,因为有时不一定去点,还可以有整个枝条不要的情况,每次去一个点贪心是做不到的,正解treedp,fjy 阅读全文
posted @ 2012-04-06 20:06
F.D.His.D
阅读(281)
评论(0)
推荐(0)
摘要:
POJ 1985题目大意:在一棵树上求一条最长的路径(题目描述根本没说= =,看discuss才知道)解:听说可以两次bfs,不知道怎么做了,有空去研究下回来写报告。我是treedp,有dep记录当前节点向下最长的路径,f为当前节点可以有的最长路径,有更新f[x] = max(f[everyson], dep[firstmaxson]+cost+dep[secondmaxson]+cost).貌似输出f[根]?我则保险遍历了f一次囧。 阅读全文
posted @ 2012-04-06 20:06
F.D.His.D
阅读(157)
评论(0)
推荐(0)
摘要:
POJ 3694题目大意:给出一副联通的无向图,求加上一条边后还有多少条桥,多次加边。解:其实就是tarjan求桥加lca,这里可以朴素记录深度,向上回溯,取消桥的标记即可。我挺二的,首先把最少边使得不存在双连通分量和加边取消双连通分量搞反了,然后去看了lca和rmq,lca不是很懂tarjan的做法,有空去看下。然后就是做题的时候记录了哪些边是桥,wa,其实只要记录点即可,如果一个点是桥标记,则说明他到他父亲这条边是桥,ac。然后_gxx的做法很神奇,首先遍历出一棵树,然后把剩下的原始边加上去,lca,覆盖桥标记(一开始的全是桥),然后新加的边也是这样处理即可。还有就是桥标记的判断是dfn[ 阅读全文
posted @ 2012-04-06 20:03
F.D.His.D
阅读(236)
评论(0)
推荐(0)
摘要:
POJ 3159题目大意:给n个小朋友们分糖果,其中有m个关系a b c,代表A允许B比自己最多多C个糖果,求第一个小朋友到第n个小朋友的糖果数的差最大是多少(满足这m个条件下)解:题目有隐藏题意,第n个小朋友(即班长要比1多),所以这些条件就是一个差分约束,然后求1到n的最短路即可(dist[x]表示1允许x比自己多多少,把关系传递,显然是一个最短路模型,如果存在一条1到x的路比已知短,显然要更新才能满足题意。),初始化全部为bilibili,dist[1]为0,鬼畜的是即使是spfa+slf+queue也会tle,但是用spfa+stack就会很快(我刷上第四名),300+ms,dij+h 阅读全文
posted @ 2012-04-06 20:01
F.D.His.D
阅读(225)
评论(0)
推荐(0)
摘要:
POJ 3621题目大意:在一幅有向图上,求有一个环,使得环上的点权a与边权和b,有a/b最大。解:我觉得这个算数学题了,分析很巧妙,我还想爆搜什么的若爆了。01分数规划问题,这里的问题转换为ans = sum(v[i]*x[i] / e[i]*x[i]);x[i]为0或1,表示取或不取,所以x就是使命题成立的一个选择,默认符合题意。所以把式子整合: ans=v/e * x;∴ ans*e-v=0所以我们二分枚举ans,当枚举点mid比ans大时,就会有 mid*e-v>0,如果小于,则是问题的关键,会有mid*e-v<0,也就是说,在图上会有一个负环。所以构图 分析 ans=v/ 阅读全文
posted @ 2012-04-06 19:59
F.D.His.D
阅读(150)
评论(0)
推荐(0)
摘要:
POJ 3177题目大意:同poj 3352。解:同poj3352,但记得处理重边的问题。View Code 1 //poj 3177 2 const 3 maxn=5111; 4 maxm=11111; 5 type 6 data=record 7 dest, next, op: longint; 8 end; 9 var 10 edge: array[1..maxm*2]of data; 11 pre, dfn, low, deg, vect: array... 阅读全文
posted @ 2012-04-06 19:54
F.D.His.D
阅读(266)
评论(0)
推荐(0)
摘要:
POJ 3352题目大意:一幅图,至少加多少条边后,使得任意断开一条边都不会把图分裂成两部分。解:求双连通分支的数量,就是把所有边双连通分量缩点,构树,答案为叶节点数目+1 >> 1;(证略)备注:有很二的地方,缩点统计想关于同一个双连通分量多次指向另一个双连通分量怎么办= 。=,明明叫双连通分量,怎么会有多条边连向其他分量呢?如果是他们也合并成一个双连通分量了。View Code 1 //poj 3352 2 const 3 maxn=1111; 4 maxm=1111; 5 type 6 data=record 7 ... 阅读全文
posted @ 2012-04-06 19:53
F.D.His.D
阅读(194)
评论(0)
推荐(0)
摘要:
POJ 2983 又是一条给我贡献wa率的题目。问题大意:有一些点在同一直线上,给出他们之间的距离的关系(要么指定比他在北边多少,要么只告诉你在他北边(至少远1单位),求这些关系是否成立。解:一开始觉得是差分约束,但是不想写bellman-ford,所以写了一坨if流,结果wa掉,看题解,写差分(用spfa),wa,wa,wa,wa,然后去orz _gxxd的程序,也没搞懂什么。最后得知判断条件是dist[u]+cost>dist[dest] then更改dist[dest]的值符合条件。然后关键点是如果是指定了远多少的边,一定要建立一条逆边,以便检查dist[u]+cost==dist 阅读全文
posted @ 2012-04-06 19:51
F.D.His.D
阅读(382)
评论(0)
推荐(0)
摘要:
POJ 2749题目大意:给出若干个牛棚的坐标,现有两个点d1, d2(交通枢纽点),d1, d2之间有一条路(本题两点的路程为横坐标之差和纵坐标之差的绝对值),求牛棚连到d1,或d2,任意两个牛棚之间最大值的最小值是多少。他还加了一个约束条件,就是给出a对牛棚,每对牛棚是不能连在同一个枢纽点,再给出b对牛棚,每对牛棚一定要连在同一个枢纽点。解:上网找做法,说这个是一种2sat模型,属于np模型、主要是讨论有节点关系为一定共存和一定不共存这样一些的图。这道题目也是一样(要么不能一起,要么一起),核心思想是二分答案(和noip2010 no3类似,有时间复习),然后建图讨论是否可行。设x为x处于 阅读全文
posted @ 2012-04-06 19:50
F.D.His.D
阅读(188)
评论(0)
推荐(0)
摘要:
POJ 2230题目大意:给出一副联通无向图,求从起点1开始,每条边走两次,回到起点的的一种路径方案。{SPJ}解:我感觉和欧拉回路有点像,然后是分析性质,把每条无向边拆成两条,可以发现,从任意点的欧拉回路都是存在的(奇数乘偶数=偶数>.<), 然后我是用了一种无赖走法,把剩余的点看成一个大点,然后走去这个大点再走回来,进入大点后不断缩小规模。主要的问题是判断点是否走过(度走完)以及边是否走过。View Code 1 //poj 2230 2 const 3 maxn=11111; 4 maxm=51111; 5 type 6 data=rec... 阅读全文
posted @ 2012-04-06 19:47
F.D.His.D
阅读(284)
评论(0)
推荐(0)
摘要:
POJ 1904题目大意:有n个王子和n个美人,每个王子喜欢一些美人,如果一个王子要娶一个美人,必须是他喜欢的。现在国王的巫师给出了一个完美匹配表(每个王子都能娶到他喜欢的女孩),现在国外想知道在不影响全部王子能娶到老婆的前提下,每个王子能有哪些选择?解:重复许多人的话:这是一条好题。一开始我自己觉得意识模糊,于是不断删去唯一的匹配边(只有一个王子喜欢的女孩和只喜欢一个女孩的王子),然后默认其他的都可以替换。其实也意识到了是一个增广路的模型,只是没有去细想,想当然会tle的。正解则是在增广路的基础上,因为给出了一个完美匹配。所以设目前王子为xi, 他初始匹配的美人为yi,如果王子选择了其他美人 阅读全文
posted @ 2012-04-06 19:46
F.D.His.D
阅读(328)
评论(0)
推荐(0)
摘要:
POJ 3422题目大意:原题的加强版,k取方格数。解:dp,dp+降维,因为这里k可以到10,用最大费用流做。先拆点,一个点变成两个点,点中间有两条边,一条费用为该方格数,流量为1,(其负边的费用是负,一开始没想到wa了好久),另一条边费用为0而流量为无限。每次找一条去到汇点的最大费用路。然后找出最小流,用pre记录前缀,从汇点回溯到原点,并更新每条边的流量。注意原点到1,1的流量为maxlongint,n,n到汇点的流量为k。这里也是wa的地方。View Code 1 //poj 3422 2 const 3 maxn=(52 * 52) << 1; 4 ... 阅读全文
posted @ 2012-04-06 19:44
F.D.His.D
阅读(327)
评论(0)
推荐(0)
摘要:
POJ 1236题目大意:有n间学校,他们之间存在一些网络线路, 例如a->b 则是学校a可以传递信息到学校b(单向), 现在有一个软件需要被传达, 拷贝给一个学校, 让它去通过线路传给其他学校。问最少要拷贝给多少间学校, 是所有学校都可以被传到到(问题1), 问题二则是至少要构建多少条线路, 使得随便给一个学校软件, 都可以传达到其他学校?解:囧, 效率好慢。正解是用强连通分量算法缩点, 然后问题一是对应找入度为零的点的个数(显然, 入度为零则没人传递, 要作为一个源点), 这个倒是想出来了。而问题二自己犯傻×想错了性质, 我是找入度为零的点*2+有入度的点*1…, 这个显然 阅读全文
posted @ 2012-04-06 19:43
F.D.His.D
阅读(164)
评论(0)
推荐(0)
摘要:
POJ 2337题目大意:多组测试数据;给出n个字符串给你, 问是否能找到一种排列方式使前一个单词的词尾与后面的单词的词头一样?解:一开始我想错了, 把单词看成点构图bfs, 结果tle(目前构点的方式都是失败的, bfs会tle, 如果是用一些性质的话还没有yy出来)。目前的写法是用单词构边, 以26个小写英文字母为节点,问是否有一种走法使所有边都走过。这样就转化为欧拉路的问题了。然后判断是否有欧拉路或者欧拉回路(注意是在有向图上,如果所有点出度等于入度则有欧拉回路, 如果出度大于入度只大于1和入度大于出度1的有且仅有一个,说明有欧拉路,但没有回路, 无向图则是偶数边有回路, 有奇边且只有两 阅读全文
posted @ 2012-04-06 19:42
F.D.His.D
阅读(275)
评论(0)
推荐(0)
摘要:
POJ 1274题目大意:求二分图最大匹配解:初试匈牙利算法,具体的一些问题,总结见程序的同文件夹下。今晚用网络流切下并验证算法正确性。2012.02.21 : dinic做法已完成,记得逆边的cost为0!{如何证明其增广正确性会不会因增广而堵塞?最优性已经被证明,每次至少能拓展一条边二分图的性质可以证明不会出现011的情况,拓展的相邻两条边一定是一条存在另一条不存在每次皆从a类节点开始, 用match转跳}匈牙利 1 const 2 maxn=211 << 1; 3 maxm=(maxn * maxn ) << 1; 4 type 5 da... 阅读全文
posted @ 2012-04-06 19:40
F.D.His.D
阅读(203)
评论(0)
推荐(0)
摘要:
POJ 1459题目大意:网络流。。解:就是读入恶心死人,本来代码都没错的检查了老久, 最后发现是seekeof和eof的读入差距, 我总是读多一个0。Seekeof:读到最后一个可见字符为止Eof:读到最后一个字符为止。View Code 1 const 2 maxn=1111; 3 maxm=1111111 << 1; 4 bilibili=maxlongint >> 1; 5 legal = ['0'..'9', '(', ',', ')']; 6 type 7 data=record 阅读全文
posted @ 2012-04-06 19:38
F.D.His.D
阅读(234)
评论(0)
推荐(0)
摘要:
POJ 1273 (吧?)题目大意:就是混蛋网络流,不能再裸了。解:请看文件夹内的关于网络流的理解。by me of 2012.2.9被网上的资料虐得一塌糊涂,有的甚至还是错的,看了三天终于切出来一条裸题了。对于网络流,增广流的的不断贪心已经理解,但是在看标号法ford-fulkerson的时候,对于站在u点,对于点i,若边f[i, u]存在则视为逆向弧并处理这个不甚理解。在整理自己理解的思路的时候,需要引入dinic的思想,不断通流导致全部通往sink汇点的路堵塞,算法结束,这里dinic每找到一条路得时候,在c[i, j] + flow的同时会连上一条边 c[j, i] - flow,这个 阅读全文
posted @ 2012-04-06 19:36
F.D.His.D
阅读(198)
评论(0)
推荐(0)
摘要:
POJ 1511题目大意:有一副有向图,求从节点1到达其他点和从所有节点到达1的最小总费用。讨论:处理有的节点不能到达的情况?解:建逆图然后2次spfa,有时间切切dijkstra+heap?这也算是黑历史了吧,让我对spfa产生恐惧的题目,今天总算ac了,原因是sum>maxlongint,可恶的是int64对数组的作用原理有异,导致又wa了几次,最后还是老老实实的用了for,当我以为错误还是出现在越界时,神奇的ac了,可恶的int64 T T(实际上是int64的数组应用, filldword无效!就算是置了一个很大的值也没有longint顶用)。View Code 1 const 阅读全文
posted @ 2012-04-06 19:35
F.D.His.D
阅读(190)
评论(0)
推荐(0)
摘要:
POJ 2485,1258题目大意:水水的最小生成树模型= =;解:prim,堆都不用了,1a有木有,纯当英语阅读了。2485 1 const 2 maxn=111; 3 var 4 g: array[1..maxn, 1..maxn]of longint; 5 dist: array[1..maxn]of longint; 6 n, ans: longint; 7 procedure init; 8 var 9 i, j: longint;10 begin11 ans := 0;12 filldword(... 阅读全文
posted @ 2012-04-06 19:33
F.D.His.D
阅读(215)
评论(0)
推荐(0)
摘要:
POJ 1789题目大意: 有若干个节点,他们有一个字符串表示他们的状态(7位),每两个节点间的距离是他们状态不同处的个数,求一条路径连接所有节点。解:最小生成树= =,可是我实在不想吐槽自己了。首先是堆写错,然后交上去还是wa,怕麻烦不想写对拍然后各种挂,最后写对拍后发现因为是多组询问,而我的ans没有清零导致wa的,浪费好多时间,不解释写完我要去k课本了= =..View Code 1 program Truck_History; 2 const 3 maxn=2000; 4 bilibili=maxlongint; 5 type 6 ... 阅读全文
posted @ 2012-04-06 19:32
F.D.His.D
阅读(310)
评论(0)
推荐(0)
摘要:
POJ1125题目大意:在一幅有向图中,求在某个点出发,到达最远的点最少的时间是多少?解:暴力最短路即可…….View Code 1 const 2 maxn=100; 3 bilibili=maxlongint >> 1; 4 type 5 data=record 6 dest, next, cost: longint; 7 end; 8 var 9 edge: array[1..maxn*maxn]of data; 10 dist, vect, heap,... 阅读全文
posted @ 2012-04-06 19:29
F.D.His.D
阅读(225)
评论(0)
推荐(0)
摘要:
POJ2240题目大意:求负环解:尼玛这有自环的,所以要u := q[head之后马上取消visit标记View Code 1 const 2 maxn=30; 3 bilibili=maxlongint >> 1; 4 type 5 data=record 6 dest, next: longint; 7 cost: double; 8 end; 9 var 10 edge: array[1..maxn*maxn]of data; 11 ... 阅读全文
posted @ 2012-04-06 19:29
F.D.His.D
阅读(179)
评论(0)
推荐(0)
摘要:
POJ2253 (忘记初始化,然后怀孕了……浪费了2个小时啊尼玛);题目大意:在坐标系上给出n个点(2<=n<=200),每两个点直接可互相到达,所有从1到2的可能的路径中,最长的那条路径最短为多少解:二分即可,二分枚举上界,再用dij求路径是否可能。View Code 1 const 2 maxn=200; 3 bilibili=maxlongint>>1; 4 type 5 point=record 6 x, y: longint; 7 end; 8 9 graph=r... 阅读全文
posted @ 2012-04-06 19:28
F.D.His.D
阅读(330)
评论(0)
推荐(0)
摘要:
POJ1062题目大意:求从0到1的最短路。解:将题意拆解见图的推理不难,故在此省略。卡住我的主要是等级问题,我也读不是很懂,最后上网搜题解才发现自己原来的判断有问题,并不是距离酋长为m的 一个2m区间,而直接是一个包含酋长的区间m(竟然有比酋长还高级的人)所以枚举区间直接ac,for a[1]-k to a[1] if i<=pow[x]<=i+k;View Code 1 const 2 maxn=100; 3 bilibili=maxlongint >> 1; 4 type 5 data=record 6 dest, c... 阅读全文
posted @ 2012-04-06 19:26
F.D.His.D
阅读(157)
评论(0)
推荐(0)
摘要:
POJ 3259题目大意:若干个路径..求负环= =………同上,小插曲就是尼玛路径是双向的,虫洞是单向的,还好我懒没顾ac率写对拍,改了交了ac..坑爹。 阅读全文
posted @ 2012-04-06 19:25
F.D.His.D
阅读(114)
评论(0)
推荐(0)
摘要:
2012.1.28题外废话一下,我终于回来了,因为莫名的恐惧,竟然2个月没正经切题了。 ——傲慢与懒惰是我目前的瓶颈。POJ 1860题目大意:sb有v个s币种,已知有若干种从a到b的兑换方式,以及所需的费用(现有100元a,兑换成b,汇率为10,手续费为10,则b=(a-手续费)*汇率)。问如果能通过某种顺序兑换来刷钱则输出yes,不能就输出no。解:因为是针对最短路和最小生成树的练习,我感觉有点作弊的成分…一开始想是否能找到一条s 到x的路,再x到s查看是否增加了,但感觉非常麻烦。后面想了想如果能成立则能无限刷钱,就是一个类似负环的问题,所以用了一个spfa+负环成立判定,把spfa的更新 阅读全文
posted @ 2012-04-06 19:24
F.D.His.D
阅读(209)
评论(0)
推荐(0)
摘要:
POJ 2823 Sliding Windows题目大意:给出一个长度为n的数组(1<=n<=10^6),然后For I := 1 to n-k+1 do 问区间a[I,i+k-1]内的最大最小值。解法:复杂度最高去到n^2,显然不能朴素询问,用单调队列去维护即可,用min举例,如果新+入的数比队尾大,则保留(以后可能会用到),若小,则不断dec(mint),直到比队尾大为止(为什么?其实就是一个贪心,新数进入窗口,说明数在窗口期间都是有效的,前面几个比它大的已经不用保存了,是一种贪心的思想),我是用了一个time数组来处理一个数是否在窗口内,比较麻烦,不知道是否有更好的方法了。{ 阅读全文
posted @ 2012-04-06 19:23
F.D.His.D
阅读(286)
评论(0)
推荐(0)
摘要:
POJ 2376 Cleaning Shifts题目大意:有n只牛和t项工作,每只牛可以执行x至y项工作,求最少的牛可以把每件工作至少执行一次。解法:由于1<=n<=25,000;1<=T<=1,000,000;由此看出不是搜索,仔细观察发现是一个求最少线段覆盖一条线段的模型。先置s=0,将线段按x关键字排序,然后开始贪心,每次选可以覆盖到s的(x-1<=s)且y最大的线段,然后更新s:=y;贪心的思想…注意处理无解如何退出,这里我觉得我需要回去仔细研究下如何退出循环,虽然AC,但并不代表完美。{突然发现自己的风格改了对不上号了囧}View Code 1 {201 阅读全文
posted @ 2012-04-06 19:21
F.D.His.D
阅读(324)
评论(0)
推荐(0)
摘要:
POJ 2299 Ultra-QuickSort(开头愤怒一句:你妹的下次记得估值范围啊,int64啊!!!)题目大意:给出一个序列,问用冒泡排序要交换多少次才能使之变成升序?解法:首先分析题目性质,将之转化为求一个数左侧有多少个数小于它,亦转化为一个逆序对的问题。因为本题n最大去到50w,所以n^2是万万不能的,所以这里用到一个树状数组求逆序对的问题(也可以用归并排序的做法做)。而这里有一个重点:离散化,注意将值一样大的数视为一样大。然后快排,同时记录他的初始位置,然后用数据a(下标同初始位置)记录大小。树状数组做法:从最后一个开始,up(a[i], 1);然后ans := ans + ge 阅读全文
posted @ 2012-04-06 19:13
F.D.His.D
阅读(185)
评论(0)
推荐(0)
摘要:
题目大意:有n头牛与m对关系,表示A牛仰慕B牛,如果A牛仰慕B牛,B牛仰慕C牛,那么我们可以认为A牛仰慕C牛,给出牛的数量与仰慕关系,求有多少牛被全部的牛仰慕。解法:用普通的dfs无能为力,因为有环的存在,各种麻烦,于是用求强连通分量的算法,这里我用了kosaraju,将强连通分量求出来之后,据fjy的说法,不用实际缩点,是要用意念把点缩在一起,每个颜色只走一次(说一下缩点,截止2011.11.25为止,我还没做缩点),然后翻老程序中又翻出了一个更神的做法,如果有两个或以上颜色点没有指向其他颜色点的边,则说明无解,不然有解(因为说明有一些牛没有支持另外那部分的牛,只有一个说明全部的牛都指向了这 阅读全文
posted @ 2012-04-06 16:34
F.D.His.D
阅读(187)
评论(0)
推荐(0)

浙公网安备 33010602011771号