08 2015 档案
SPOJ QTREE 树链剖分
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std; 10 #define N 10010 11... 阅读全文
posted @ 2015-08-27 17:32 Love风吟 阅读(203) 评论(0) 推荐(0)
FZU 2082 过路费
摘要:树链剖分模板题 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define N 50010 7 #define ls o>1 10 #define ll long long 11 in... 阅读全文
posted @ 2015-08-27 17:30 Love风吟 阅读(200) 评论(0) 推荐(0)
bzoj 1036 Tree Count
摘要:题目大意:给出一棵树,每个点有一个权值,要求三种操作:1.修改某个点的权值,2.询问x到y路径上各点的权值最大值,3.询问x到y路径上各点的权值之和。 1 #include 2 #include 3 #include 4 #include 5 using namespace std... 阅读全文
posted @ 2015-08-27 17:29 Love风吟 阅读(223) 评论(0) 推荐(0)
POJ 3237
摘要:题目大意:指定一颗树上有3个操作:询问操作,询问a点和b点之间的路径上最长的那条边的长度;取反操作,将a点和b点之间的路径权值都取相反数;变化操作,把某条边的权值变成指定的值。 1 #include 2 #include 3 #include 4 5 using namespace... 阅读全文
posted @ 2015-08-27 17:26 Love风吟 阅读(262) 评论(0) 推荐(0)
POJ 2763
摘要:题意:给一个数,边之间有权值,然后两种操作,第一种:求任意两点的权值和,第二,修改树上两点的权值。 1 #pragma comment(linker, "/STACK:1024000000,1024000000") 2 #include 3 #include 4 #include 5... 阅读全文
posted @ 2015-08-27 17:24 Love风吟 阅读(155) 评论(0) 推荐(0)
HDU 3966 基础树链剖分
摘要:题意:给一棵树,并给定各个点权的值,然后有3种操作:I C1 C2 K: 把C1与C2的路径上的所有点权值加上KD C1 C2 K:把C1与C2的路径上的所有点权值减去KQ C:查询节点编号为C的权值 1 #pragma comment(linker, "/STACK:1024000000,102... 阅读全文
posted @ 2015-08-27 17:21 Love风吟 阅读(158) 评论(0) 推荐(0)
POJ 1741 树的点分治
摘要:题目大意:树上找到有多少条路径的边权值和>=k这里在树上进行点分治,需要找到重心保证自己的不会出现过于长的链来降低复杂度 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 #... 阅读全文
posted @ 2015-08-27 17:16 Love风吟 阅读(140) 评论(0) 推荐(0)
POJ 2104 静态找区间第k大
摘要:静态区间第k大的问题,往往可以利用主席树来解决这是主席树的第一道题主席树大概可以理解为在n个节点上都建立一棵线段树,但是想想会超出内存每一个节点保存的线段树都记录当前整段前缀区间的信息但是因为每次添加后一个节点,那么他除了当前节点位置需要更新之外,其他的位置都可以保持跟上一棵节点对应的线段树一致,那... 阅读全文
posted @ 2015-08-27 10:32 Love风吟 阅读(332) 评论(0) 推荐(0)
HDU 3333 树状数组离线查询
摘要:题目大意:询问区间内不同种类的数的数值之和这里逐个添加最后在线查询,会因为相同的数在区间内导致冲突我们总是希望之后添加的数不会影响前面,那么我们就在添加到第i个数的时候,把所有在1~i 的区间的询问全部处理完成即可对于之前的冲突,我们可以不断记录上一次冲突的位置,给当前的前缀和添加一个当前的val对... 阅读全文
posted @ 2015-08-24 11:17 Love风吟 阅读(924) 评论(1) 推荐(0)
HDU 3341 状态压缩DP+AC自动机
摘要:题目大意:调整基因的顺序,希望使得最后得到的基因包含有最多的匹配串基因,使得所能达到的智商最高这里很明显要用状态压缩当前AC自动机上点使用了基因的情况所能达到的最优状态我最开始对于状态的保存是,针对基因的个数转化为最小的二进制个数保存,但是浪费了很多二进制位,比如8 -> 1000,那么之后的100... 阅读全文
posted @ 2015-08-22 11:11 Love风吟 阅读(260) 评论(0) 推荐(0)
zoj 3228 覆盖及非覆盖串的多次匹配
摘要:题目题意:给定多个小串,在一个长串中寻找这些串的匹配次数,有些统计的是可覆盖的,有些统计的是非覆盖的先可以简单理解一下,建立ac自动机后,当前节点包含的字符串必然被把它作为fail指针的节点包含,所以一开始写了个set[MAX],然后MLE了如果一个当前串被完全访问了,那么这个串一定是在整个fail... 阅读全文
posted @ 2015-08-20 09:36 Love风吟 阅读(224) 评论(0) 推荐(0)
POJ 3691 AC自动机上的dp
摘要:题目大意:给定一些不合理的DNA序列,再给一段较长的dna序列,问最少修改几次可以使序列中不存在任何不合理序列,不能找到修改方法输出-1这里你修改某一个点的DNA可能会影响后面,我们不能单纯的找匹配数,因为你找到了你也不一定有方法改变它这里用DP来解决判断到第i位dna , 之前dp值保存了前面dn... 阅读全文
posted @ 2015-08-18 00:37 Love风吟 阅读(124) 评论(0) 推荐(0)
URAL 1158 AC自动机上的简单DP+大数
摘要:题目大意在一种语言中的字母表中有N(N 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define clr(x) memset(x ,... 阅读全文
posted @ 2015-08-18 00:31 Love风吟 阅读(272) 评论(0) 推荐(0)
bzoj 3687 bitset的运用
摘要:题目大意:小呆开始研究集合论了,他提出了关于一个数集四个问题:1. 子集的异或和的算术和。2. 子集的异或和的异或和。3. 子集的算术和的算术和。4. 子集的算术和的异或和。目前为止,小呆已经解决了前三个问题,还剩下最后一个问题还没有解决,他决定把这个问题交给你,未来的集训队队员来实现。【输入格式】... 阅读全文
posted @ 2015-08-17 14:06 Love风吟 阅读(279) 评论(0) 推荐(0)
HDU 5313 bitset优化背包
摘要:题目大意:添加尽可能少的边,最后使图形成二分图一开始将图区分成一个个联通分量,根据二分图染色,计算出每个联通分量的黑色点和白色点的个数希望添加的边最少,那么合并的时候,希望黑白块尽可能平均,这无疑背包dp做,但超时了。。。T T跟着题解说的bitset,学了一下,果然总共10000个点不到,那么只要... 阅读全文
posted @ 2015-08-17 14:02 Love风吟 阅读(550) 评论(0) 推荐(0)
bzoj 2595 斯坦纳树
摘要:题目大意:选定一些格子保证景点对应的格子通过这些格子连通,保证选定的所有格子对应的权值和最小这是相当于理解为将所有点形成的最小生成树这里点的个数很少,所以可以对每一个点进行状态压缩f[st][i]表示连通性至少为st,且经过i点的最小距离方程1.f[st][i] = Min{f[s][i] + f[... 阅读全文
posted @ 2015-08-16 22:04 Love风吟 阅读(193) 评论(0) 推荐(0)
COJ 1287 求匹配串在模式串中出现的次数
摘要:这里要在后缀自动机的节点中维护一个从到达当前位置出现的字符串总个数这里新添加进来的节点的状态出现的次数必然为1另外包含所能达到这个节点所能到达的状态一定是将它作为父亲的点那么说明将它作为父亲的点添加进来一定会使它的所有父亲状态数都+1所以直接在添加节点结束后不断向上更新 1 #include 2 ... 阅读全文
posted @ 2015-08-16 16:23 Love风吟 阅读(270) 评论(0) 推荐(0)
HDU 5381 The sum of gcd
摘要:题目大意:f(l,r)=∑ri=l∑rj=igcd(ai,ai+1....aj)求解多个区间 l , r 对应的f(l,r)值这里首先要知道一个数的因子个数不超过log2(n)个,所以作为一个int整数来说,对应求得的最多只有31种gcd值那么线段树上就可以维护这样的31种gcd值,并记录他们对应的... 阅读全文
posted @ 2015-08-16 10:23 Love风吟 阅读(1615) 评论(6) 推荐(0)
POJ 1739
摘要:楼教主男人八题之一。。。题目大意:求从左下角经过所有非障碍点一次到达右下角的方案数这里不是求回路,但是我们可以考虑,在最下面一行再增加一行,那么就可以当做求此时左下角到右下角的回路总数,那么就转化成了陈丹琦论文的URAL1519的方法了但是最后一行添加的格子必须是最后一条直线跑的,也就是除了左下角和... 阅读全文
posted @ 2015-08-15 10:20 Love风吟 阅读(286) 评论(0) 推荐(0)
HDU 3377 插头dp
摘要:题目大意:从左上角走到右下角,每个点之多经过一次,取到所有路径上经过点的权值,求最大的权值之和,这里走到右下角就算停止了这里有个思路是转化成熟悉的回路问题在上方和右方最外围定义一圈权值为0 , 那么我们相当于从定义以后的左上角开始经过所有外围点形成的回路,那么去掉最外围的0,剩下的就是(1,1)-》... 阅读全文
posted @ 2015-08-14 18:51 Love风吟 阅读(300) 评论(0) 推荐(0)
HDU 1693 二进制表示的简单插头dp
摘要:题目大意:找到多条回路覆盖所有非障碍格子,问这样回路的种数这里的插头与URAL1519 不一样的是 只要管它是否存在即可,只需要1个二进制位表示状态 1 #include 2 #include 3 #include 4 #include 5 6 using namespace ... 阅读全文
posted @ 2015-08-12 19:27 Love风吟 阅读(400) 评论(0) 推荐(0)
HDU 5353
摘要:题目大意:相邻的朋友可以给出自己手上最多一颗糖,n个朋友形成一个环,问给的方式能否最后使所有朋友都糖的数量相同这里我用的是网络流来做的,这里n=100000,用sap的模板可以跑过 1 #include 2 #include 3 #include 4 #include 5 usin... 阅读全文
posted @ 2015-08-11 11:00 Love风吟 阅读(227) 评论(0) 推荐(0)
URAL 1519 基础插头DP
摘要:题目大意:给定一个图,一部分点'*'作为障碍物,求经过所有非障碍点的汉密尔顿回路有多少条基础的插头DP题目,对于陈丹琦的论文来说我觉得http://blog.sina.com.cn/s/blog_51cea4040100gmky.html这个博客写的更容易理解,不过好像这篇博客里的代码有问题,反正是... 阅读全文
posted @ 2015-08-10 16:05 Love风吟 阅读(281) 评论(0) 推荐(0)
UVA 10294 等价类计数
摘要:题目大意:项链和手镯都是若干珠子穿成的环形首饰,手镯可以旋转和翻转,但项链只能旋转,给n个珠子,t种颜色,求最后能形成的手镯,项链的数量这里根据等价类计数的polya定理求解对于一个置换f,若一种方案经过置换后不改变,那么不改变的点的个数记作C(f)统计所有的C(f) , 相加之后求和除以置换的种数... 阅读全文
posted @ 2015-08-09 12:37 Love风吟 阅读(267) 评论(0) 推荐(0)
LA 5061 LCA tarjan 算法
摘要:题目大意:给定所有点的权值都为0,给定一棵树以后,每次询问都要求给定两点 x , y 和一个权值w,要求x,y路径上所有点权值加上w,最后求出每一个节点的值这里因为查询和点都特别多,所以希望能最后一次性更新节点的值我们可以这么考虑,每次询问中找到x,y的最近公共祖先,那么我们将val[x] +=w ... 阅读全文
posted @ 2015-08-09 10:51 Love风吟 阅读(176) 评论(0) 推荐(0)
HDU 2586 LCA
摘要:题目大意:多点形成一棵树,树上边有权值,给出一堆询问,求出每个询问中两个点的距离这里求两个点的距离可以直接理解为求出两个点到根节点的权值之和,再减去2倍的最近公共祖先到根节点的距离这是自己第一道lca题目学习了两种方法第一种在ST算法,利用RMQ思想预处理 1 /*在线ST算法*/ 2 #pragm... 阅读全文
posted @ 2015-08-08 11:11 Love风吟 阅读(173) 评论(0) 推荐(0)
HDU 2255 二分图最佳匹配 模板题
摘要:题目大意:给定每一个人能支付的房子价值,每个人最多且必须拥有一套房子,问最后分配房子可得到的最大收益抄了个别人的KM模板,就这样了。。。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define ... 阅读全文
posted @ 2015-08-07 15:29 Love风吟 阅读(134) 评论(0) 推荐(0)
POJ 1741 树上的点分治
摘要:题目大意:找到树上点对间距离不大于K的点对数这是一道简单的练习点分治的题,注意的是为了防止点分治时出现最后分治出来一颗子树为一条直线,所以用递归的方法求出最合适的root点 1 #include 2 #include 3 #include 4 #include 5 #include 6 ... 阅读全文
posted @ 2015-08-01 18:43 Love风吟 阅读(170) 评论(0) 推荐(0)