随笔分类 -  ACM-UVA/LA/SPOJ/bzoj/FZU

bzoj 1185 旋转卡壳 最小矩形覆盖
摘要:题目大意 就是求一个最小矩形覆盖,逆时针输出其上面的点这里可以看出,那个最小的矩形覆盖必然有一条边经过其中凸包上的两个点,另外三条边必然至少经过其中一个点,而这样的每一个点逆时针走一遍都满足单调性所以可以利用旋转卡壳的思想找到这样的三个点以每一条边作为基础,循环n次得到n个这样的矩形,找到其中面积最... 阅读全文
posted @ 2015-07-11 15:11 Love风吟 阅读(382) 评论(0) 推荐(0)
SPOJ SUBLEX 求第k小子串
摘要:题目大意:对于一个给定字符串,找到其所有不同的子串中排第k小的子串先构建后缀自动机,然后我们可以将整个后缀自动机看做是一个DAG图,那么我们先进行拓扑排序得到 *b[N]对于每个节点记录一个sc值,表示当前节点往下走可以得到不同的字符串的个数然后从后往前,每次到达一个节点,当前节点sc赋1,然后每个... 阅读全文
posted @ 2015-06-24 19:59 Love风吟 阅读(1146) 评论(0) 推荐(0)
SPOJ NSUBSTR
摘要:题目大意:给定一个字符串,求每个对应的长度能产生的相同子串的最大个数这里构建好后缀自动机之后,再将整个字符串从头到尾扫一遍,然后将每个对应的点上的sc值+1表示从头走到尾的前提下,所能产生的子串能够得到的最大数量为1然后再去考虑其他子串每个后缀自动机上的节点上的长度表示的是当前点所能接收的最大长度的... 阅读全文
posted @ 2015-06-20 16:44 Love风吟 阅读(812) 评论(0) 推荐(0)
SPOJ LCS2 多个串的最长公共子串
摘要:这里串最多有10个,找所有串的最长公共子串这里后缀自动机做,以第一个串建立后缀自动机,后面的串一个个去匹配,每次得到当前串在可到达状态上所能得到的最长后缀长度拿所有串匹配后得到的结果进行计算 1 #include 2 #include 3 #include 4 using namespace ... 阅读全文
posted @ 2015-06-19 02:01 Love风吟 阅读(240) 评论(0) 推荐(0)
SPOJ LCS 后缀自动机找最大公共子串
摘要:这里用第一个字符串构建完成后缀自动机以后不断用第二个字符串从左往右沿着后缀自动机往前走,如能找到,那么当前匹配配数加1如果找不到,那么就不断沿着后缀树不断往前找到所能匹配到当前字符的最大长度,然后将cur节点转移到当前节点即可,再把答案加1记住不断更新所能得到的最大值 1 #include 2 #... 阅读全文
posted @ 2015-06-19 00:57 Love风吟 阅读(324) 评论(0) 推荐(0)
SPOJ GSS1 静态区间求解最大子段和
摘要:题目大意:给定n个数,再给q个区间询问,希望在区间s,t中找到一段连续的子序列使其和最大因为询问上万,节点数50000,明显是用线段树去做,这里很明显的区间更新,唯一写起来有点恶心的是询问每一个区间的最大都要跟左右区间的左最大右最大有关系反正时要注意细节了,查询的时候同时要查询其左右连续最大自己的错... 阅读全文
posted @ 2015-06-06 20:23 Love风吟 阅读(608) 评论(0) 推荐(0)
UVALive 4015 树形dp
摘要:题目大意:从一个根节点出发,走最多x的长度,问最多能走过多少个节点,图保证是一棵树dp[0][i][j] , 表示走从i点为根的子树走过了j个点最后回到 i 最少需要多少时间dp[1][i][j] , 同理,但表示不需要回到 i 那么由儿子不断向父亲更新,有4种情况1.if(dp[0][u][k+j... 阅读全文
posted @ 2015-05-28 23:51 Love风吟 阅读(268) 评论(0) 推荐(0)
bzoj 2337 高斯消元+概率DP
摘要:题目大意:每条路径上有一个距离值,从1走到N可以得到一个所有经过路径的异或和,求这个异或和的数学期望这道题直接去求数学期望的DP会导致很难列出多元方程组我们可以考虑每一个二进制位从1走到N的平均概率值因为整个图是联通的那么所有点都默认会处于多元方程组中Pi = p[i] * sigma( v&d... 阅读全文
posted @ 2015-05-28 13:10 Love风吟 阅读(216) 评论(0) 推荐(0)
FZU 1686 dlx重复覆盖
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 using namespace std; 10 #define N 230 11 #define MA... 阅读全文
posted @ 2015-05-16 23:56 Love风吟 阅读(185) 评论(0) 推荐(0)
LA 3890 半平面交
摘要:二分查询答案,判断每一个新形成的向量合在一块能否形成半平面交 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 110 8 #define ep... 阅读全文
posted @ 2015-05-01 15:16 Love风吟 阅读(193) 评论(0) 推荐(0)
bzoj 1500 [NOI 2005] 维修数列
摘要:题目大意不多说了貌似每个苦逼的acmer都要做一下这个splay树的模版题目吧还是有很多操作的,估计够以后当模版了。。。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace ... 阅读全文
posted @ 2015-04-22 00:10 Love风吟 阅读(159) 评论(0) 推荐(0)
bzoj 1503[NOI 2004] 郁闷的出纳员
摘要:题目大意:给4种操作I:添加一个员工工资信息A:增加所有员工的工资S:减少所有员工的工资F:询问工资第k高的员工的工资情况自己做的第一道splay树的题目,初学找找感觉 1 #include 2 #include 3 #include 4 5 using namespace std... 阅读全文
posted @ 2015-04-20 18:15 Love风吟 阅读(119) 评论(0) 推荐(0)
bzoj 2038 [2009国家集训队]小Z的袜子(hose)
摘要:这道题的概率求解最难算的就是求出能取到多少对多少颜色相同的袜子因为询问次数过多,这里不能一个个求解询问,需要将询问分块后访问先这么理解:令cnt[i] 表示 颜色 i 在当前的 l ~ r 的区域内出现的次数 , 此时颜色相同的袜子对数为 tmp比如说此时 r 向前一步到r+1 , 那么此时除了va... 阅读全文
posted @ 2015-04-15 22:33 Love风吟 阅读(195) 评论(0) 推荐(0)
* SPOJ PGCD Primes in GCD Table (需要自己推线性筛函数,好题)
摘要:题目大意:给定n,m,求有多少组(a,b) 0g(p'x)=mu[x]2.x%p'!=0 , 那么对于先前所有的 x/p 来说,此时乘了p' , 若p!=p' , 那么因为多了一个因子 mu[p'*x/p] = -mu[x/p] , 所以在p!=p'时,所有的情况相加为-g(x),在考虑枚举到的p'... 阅读全文
posted @ 2015-04-14 22:25 Love风吟 阅读(230) 评论(0) 推荐(0)
SPOJ - VLATTICE Visible Lattice Points 莫比乌斯反演
摘要:题目大意:从坐标(0,0,0)处观察到所有在(n,n,n)范围内的点的个数,如果一条直线上出现多个点,除了第一个,后面的都视为被遮挡了这题目稍微推导一下可得知 gcd(x,y,z) = 1的点是可观察到的,若三者的gcd>1,则这个点之前必然出现了一个(x/gcd(x,y,z) , y/gcd(x,... 阅读全文
posted @ 2015-04-14 13:39 Love风吟 阅读(151) 评论(0) 推荐(0)
URAL 1297 求最长回文字符串
摘要:有种简单的方法,数组从左到右扫一遍,每次以当前的点为中心,只要左右相等就往左右走,这算出来的回文字符串是奇数长度的还有偶数长度的回文字符串就是以当前扫到的点和它左边的点作为中心,然后往左右扫这是O(n^2)的复杂度,这道题过还是没有问题的这里我主要练习的是另外的利用后缀数组加RMQ算法来解决这个问题... 阅读全文
posted @ 2015-04-04 00:03 Love风吟 阅读(213) 评论(0) 推荐(0)
SPOJ ARCTAN
摘要:POJ1183 除输入方式外与这道题完全一样题目大意是给定一个a求最小的满足arctan(1/A)=arctan(1/B)+arctan(1/C) 的B+C的最小值根据上述递推规律,我们只要从2*a开始往前递增寻找找到第一个满足b,c均为正整数的情况就是最小的#include #define ll ... 阅读全文
posted @ 2015-02-02 10:18 Love风吟 阅读(244) 评论(1) 推荐(0)
UVA 11426 GCD - Extreme (II)
摘要:题目大意:求出我们可以通过求∑(1#include #include using namespace std;#define ll long longconst int N = 4000010;int prime[N] , phi[N] , tot;bool vis[N];void get_phi(... 阅读全文
posted @ 2015-01-29 21:53 Love风吟 阅读(123) 评论(0) 推荐(0)