
POJ
qpswwww
这个作者很懒,什么都没留下…
展开
-
[POJ 3694]Network(Tarjan+并查集+LCA 动态加边求图中桥的个数)
题目链接http://poj.org/problem?id=3694题目来源2008 Asia Hefei Regional Contest Online,by USTC题目大意维护一张图中桥的个数,支持动态加边(加边次数为qq次)。 1≤|V|≤100000,1≤|E|≤200000,1≤q≤10001≤|V|≤100000,1≤|E|≤200000,1≤q≤1000思路对于初始的图,用tarj原创 2015-02-21 11:55:39 · 1182 阅读 · 0 评论 -
[POJ 2187]Beauty Contest(旋转卡壳)
题目链接http://poj.org/problem?id=2187题目大意求平面上最远的两个点的距离的平方。思路裸凸包+旋转卡壳求凸包上最远点对。。。 注意旋转卡壳的很多细节,不然会WA。。。 其实这个题也是可以用O(n2)O(n^2)暴力水过的,因为数据太弱。。。代码#include <iostream>#include <stdio.h>#include <stdlib.h>#inc原创 2015-04-15 11:03:56 · 451 阅读 · 0 评论 -
[省选前题目整理][POJ 3461]Oulipo(KMP)
题目链接http://poj.org/problem?id=3461题目大意给出模式串W和主串T,求W在T中的出现次数。思路最基础的KMP。代码#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#define MAXN 1001000#define M原创 2015-04-08 08:49:40 · 545 阅读 · 0 评论 -
[POJ 2774]Long Long Message(后缀数组)
题目链接http://poj.org/problem?id=2774题目大意求两个字符串a与ba与b的最长公共子串思路我们可以把bb串拼到aa串后面,中间插入一个从未出现过的分割符(比如$、#之类的),那么这个新串中任意两个后缀的LCP 具体做法可以参考《后缀数组——处理字符串的有力工具》,通过找规律可以发现,对于任意的i>1,height[i]i>1,height[i]的值有可能是a串里两个后缀原创 2015-04-08 17:16:27 · 600 阅读 · 0 评论 -
[POJ 1743]Musical Theme(后缀数组)
题目链接http://poj.org/problem?id=1743题目大意给出一个序列,要在它的差分序列中找两个完全相同且互不重叠的子串,求这样的子串的最大长度。思路不妨设差分后的序列长度为nn。 可以考虑二分这个子串的长度,问题变成判定原序列中是否存在长度为kk的两个完全相同且互不重叠的子串。 我们可以在heightheight数组中找出若干个连续的区间段[Li,Ri][L_i,R_i],对原创 2015-04-08 21:04:33 · 447 阅读 · 0 评论 -
[省选前题目整理][POJ 3468]A Simple Problem with Integers(线段树区间修改)
题目链接http://poj.org/problem?id=3468题目大意要求对一个序列支持查询区间和、对给定区间中所有元素加同一值。思路经典的线段树区间修改、区间求和模板题。代码#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#define MAX原创 2015-04-11 15:40:27 · 470 阅读 · 0 评论 -
[省选前题目整理][POJ 2407]Relatives(欧拉函数)
题目链接http://poj.org/problem?id=2407题目大意给出nn,求欧拉函数ϕ(n)\phi(n)思路有两种做法: 1、O(n)O(n)线性筛法,适合nn很小但是求欧拉函数次数很多的地方。由于此题nn过大因此会TLE。 2、根据欧拉函数公式分解nn的质因数,适合nn比较大但是求欧拉次数很少的地方,适合本题。代码1、O(n)O(n)线性筛#include <iostream>原创 2015-04-10 19:00:38 · 490 阅读 · 0 评论 -
[POJ 3415]Common Substrings(后缀数组)
题目链接http://poj.org/problem?id=3415题目大意求字符串A与BA与B的长度大于等于mm的公共子串个数。思路看到公共子串一类的题目,很容易想到用后缀数组做。我们首先把BB串加到AA串后面,中间用一个字符$分割开,然后求后缀数组 。对于AA的后缀ii和BB的后缀jj而言,若它们的LCP>=mLCP>=m,则它们会给最终的答案贡献(i−m+1)(j−m+1)(i-m+1)(j原创 2015-04-09 21:51:56 · 423 阅读 · 0 评论 -
[省选前题目整理][POJ 1741]Tree(点分治)
题目链接http://poj.org/problem?id=1741题目大意求树上使得a到b的最短路小于等于K的无序点对(a,b)个数思路经典点分治问题。 如上图,所有符合题意的路径只可能是上面两种形态之一。我们就是要求出所有这样的长度小于等于K的路径,并去掉不合法的路径(重复经过了某条边的路径以及重复计算的路径,实际上点分治是不会出现重复计算的情况的,因为将一个树以重心分割成若干子树后,下一层分原创 2015-04-03 11:09:39 · 570 阅读 · 0 评论 -
[省选前题目整理][POJ 3133]Manhattan Wiring(插头DP)
题目链接http://poj.org/problem?id=3133题目大意给定一个n*m的棋盘,每个格子要么是空格,要么是障碍物,要么是格子1,要么是格子2,整个棋盘有且仅有2个格子1,2个格子2,现在要把两个1用联通块连起来,两个2用联通块连起来,而且两坨联通块之间不能有交集,求两坨联通块大小-2。 整体思路:插头DP、最小表示法。 不妨设整个棋盘数组为map[][],map[i][j]=0原创 2015-03-31 17:19:18 · 970 阅读 · 0 评论 -
[省选前题目整理][POJ 1330]Nearest Common Ancestors(倍增法求LCA)
题目链接http://poj.org/problem?id=1330思路非常裸的倍增LCA练手题。。。代码#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#define MAXN 12000using namespace std;struct edge原创 2015-03-31 08:44:53 · 718 阅读 · 0 评论 -
[POJ 3207]Ikki's Story IV - Panda's Trick(2-SAT入门题)
题目链接http://poj.org/problem?id=3207题目大意思路代码#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#define MAXE 251000#define MAXV 251000using namespace std;i原创 2015-03-14 15:39:54 · 576 阅读 · 0 评论 -
[省选前题目整理][POJ 2942]Knights of the Round Table(Tarjan求点双联通分量+DFS对环染色)
题目链接http://poj.org/problem?id=2942题目大意有n个骑士要参加一个会议,其中有m对骑士互相憎恶,互相憎恶的骑士不能同时出席会议,n个骑士要坐在多个圆桌上,而且每桌至少要有3个骑士,每桌的骑士个数也必须是奇数个,问有多少骑士无论如何也不能出席会议。思路Tarjan算法求点双联通分支+DFS交叉染色法找奇环。首先我们逆向思考此题的反问题:有多少骑士可能出席这个会议。我们对任原创 2015-03-30 19:04:52 · 634 阅读 · 0 评论 -
[省选前题目整理][POJ 2069]Super Star(爬山搜索)
题目链接http://poj.org/problem?id=2069思路代码#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#include <cmath>#define EPS (1e-8)using namespace std;struct Po原创 2015-03-29 21:35:58 · 610 阅读 · 0 评论 -
[省选前题目整理][POJ 2699]The Maximum Number of Strong Kings(暴力枚举+最大流)
题目链接http://poj.org/problem?id=2699题目大意n个人比赛, 两两比,共n(n-1)场比赛, 赢的人得1分, n<=10。如果一个人打败了所有比自己分数高的人, 或者他本身就是分数最高的, 那么他就是StrongKing。可能有多个Strong King, 现在按非降的顺序给你每个人的得分(不难道想到容量把), 问Strong King最多能有几个。思路显然n个人之间的比原创 2015-03-29 18:47:36 · 556 阅读 · 0 评论 -
[POJ 2069]Super Star(爬山搜索、最小球覆盖)
题目链接:http://poj.org/problem?id=2069 题目大意:给nn个点的坐标(xi,yi,zix_i,y_i,z_i),求覆盖这nn个点的最小球的半径rr。 再一次见识到了模拟退火的威力。首先我们乱定一个圆心,然后退火乱搞就行了,过程比较简单。注意每次移动的变化量参数deltadelta最好定为0.980.98,具体为什么不清楚,但是据网上说设成0.950.95精度就会出现原创 2015-02-11 21:54:11 · 1183 阅读 · 0 评论 -
[省选前题目整理][POJ 1830]开关问题(XOR方程组高斯消元)
题目链接http://poj.org/problem?id=1830思路很好的一道题。。。 对于nn个开关,我们可以很容易地列出nn个nn元一次方程,每个方程如下: a1x1⊕a2x2⊕a3x3...⊕anxn=ca_1x_1⊕a_2x_2⊕a_3x_3...⊕a_nx_n=c 其中每个a、x、ca、x、c均为0或1,xi=1x_i=1表示第ii个开关按下,xi=0x_i=0表示第ii个开关没原创 2015-03-25 14:27:06 · 655 阅读 · 0 评论 -
[POJ 3683]Priest John's Busiest Day(2-SAT+拓扑排序输出可行解)
题目链接http://poj.org/problem?id=3683题目大意思路代码#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#define MAXE 4100000#define MAXV 2100using namespace std;st原创 2015-03-15 21:58:47 · 623 阅读 · 0 评论 -
[POJ 3420]Quad Tiling(状压DP+矩阵乘法)
题目链接http://poj.org/problem?id=3420题目大意给你一个4∗n4*n大小的棋盘,要你在上面用若干个1∗21*2大小的方块填满,两个方块之间互相不能重叠。问填满方块的方案数思路考虑nn比较小的情况。用f[i][S]f[i][S]表示当前dp到第ii列,上一列格子是否填满的二进制状态为SS的方案数。那么可以假设存在第0列,该列状态为(1111)2(1111)_2,则初始时f[原创 2015-05-21 10:21:10 · 900 阅读 · 0 评论