摘要:
链接:https://www.luogu.org/problemnew/show/P3747 题解: 欧拉定理+线段树维护 求ccc……a[i] %p的值 看上去一脸不可做,这要乘多少次 然而这个世界上存在着一个神奇的定理——欧拉定理EXT ax ≡ax%φ(m)+φ(m)(mod m) 既然我们要 阅读全文
摘要:
题解: 显然可以利用条件构成一颗树 不错的一道dp题 f[i][j]表示i点,在子树中排名j 那么转移方程不是特别难得出 其中那个可以用前缀和后缀和优化,即下面代码里的sp数组 枚举第x个位置上它排名为i,然后左儿子有ai个在x之前 之后将分界线两边排列组合一下就可以了 再乘以两边f[x'][i]满 阅读全文
摘要:
题解: 裸的主席树吧 要想避免带修主席树的话先排序一下吧 阅读全文
摘要:
题解: 好像有题解说可以贪心。。 显然这是一棵树,考虑树形dp 维护f[i][j]从点i往下走j再回来经过的最多点,g[i][j]从点i往下走j不用回来经过的最多点 转移方程还是挺显然的,枚举的时候像背包一下从大道小枚举 时间复杂度大概是n3的吧 阅读全文
摘要:
题解: 首先,按照原树,构建出一个全部都是虚边的LCTLCT ,并用树剖维护每个点到根节点的路径权值valval。可以发现,每个点到根节点的路径权值就是每个点到根节点的路径上实链的个数。 我们发现,操作11 实际上就是LCTLCT 中AccessAccess 的操作。在AccessAccess 的操 阅读全文
摘要:
https://www.luogu.org/problemnew/show/P3382 在一个先递增后递减的函数上寻找拐点 代码: 阅读全文
摘要:
把一份倒序复制到后面 中间加上阻断符号(为了防止两边超过自己范围),然后枚举中间点(分奇数偶数讨论) 代码: 阅读全文
摘要:
题意: 求至少出现k次的最长字符串(可重复) 题解: 后缀数组维护height数组只要找连续k个的最小值 代码: 阅读全文
摘要:
题意:求不相同的子串个数 题解: 考虑一下后缀数组 yy一下就能发现答案就是n*(n+1)/2-sigma(i=1;i<=n;i++)height[i] 代码: 阅读全文
摘要:
题解: 后缀数组+二分答案 首先会发现这题实质上就是求最长不重复的相同子段 首先二分答案长度,之后对每一段信息进行维护 一段信息即保证这一段的sa值都大于mid即可 然后找到这段中后缀位置最大和最小处位置差大于等于当前长度就可以了 代码: 阅读全文
摘要:
定义三个概念: sa[i]:字典序排名第i位的是谁 rank[i]:第i位的字典序排名 height[i]:排名为i的字符串与前一名的最长前缀 关于sa的求法: 关于height的求法: 当h[i-1]>1时,我们不妨设suffix(k) 为”abcee…”suffix(i-1)为 “abdee…” 阅读全文
摘要:
题解: ac自动机+dp的题目 差不多都一个套路 记录枚举了i位,匹配到自动机上的x位,然后对于匹配了哪些单词状态压缩一下就可以了 代码: 阅读全文
摘要:
代码: 洛谷的两道模板题 ac自动机基本只要在模板上做修改就好了 阅读全文
摘要:
题解: lct动态维护最小生成树 每次加边时若这两个之间不连通,那么直接连接 如果这两个点联通,那么就找到这条边上的最大值 如果这个大于当前边,就替换掉 但是需要注意的是lct只能维护点,不能维护边 所以可以把边弄成点 代码: 阅读全文
摘要:
链接:https://www.luogu.org/problemnew/show/P3676 题解: 看暴力:每次修改只会影响到它到1的链,询问也是它到1的链 那么考虑用树链剖分变成dfs序 链剖都想了那就考虑用线段树维护这个dfs序上的信息 维护dfs序上每个点子树的val和的平方和 修改? 假设 阅读全文
摘要:
题解: 代码: 阅读全文
摘要:
链接:https://www.luogu.org/problemnew/show/P3203 题解: lct模板题 代码: 阅读全文
摘要:
题解: 这题是lct并不难想 关键在于如何建图 如果把每个大象连向第一个不能处理的大象 那么cut操作要删除的就是一个点而不是边 所以可以采用先离散化, 之后对于存在的大象,用边连向第一个不能处理的大象(不论存不存在) 对于不存在的大象,用边连向下一个大象 令不存在的大象权值为0,存在的为1 那么答 阅读全文
摘要:
题解: 考虑从小到大枚举右端点 对于每个点,令它的权值等于它的编号 那么我们可以用lct维护出一颗最大生成树 维护方法是每次插入一条判断他们在不在一颗树上 若不在直接加,若在就找到链上的最小值 之后看看有几条边满足>=li且在最大生成树上 然后题目是强制在线的 那么求这个用主席树来维护就好了 阅读全文
摘要:
洛谷lct模板 详细网址:http://www.cnblogs.com/flashhu/p/8324551.html 阅读全文
摘要:
卡着时间过得,大概是因为全用了ll,时间涨了一倍吧?? 懒得改了,第一道虚树还是思路比较重要 下面这段文字是复制来的: 给出一棵树. 每次询问选择一些点,求一些东西.这些东西的特点是,许多未选择的点可以通过某种方式剔除而不影响最终结果. 于是就有了建虚树这个技巧..... 我们可以用log级别的时间 阅读全文
该文被密码保护。 阅读全文
摘要:
题解: 线段树的一道神奇的应用? 由于只要两行,路径不会太过复杂,可以考虑用线段树进行维护 注意到路径只会有两种,(假设目标在它右边) 第一种就是刚开始向右再也不会回头了 这中间路径是可以波动的 第二种就是先往左绕到它上/下那个点再继续第一种 很容易发现这个操作是不会有波动的 所以只有某个点往左一段 阅读全文
摘要:
题解: 思路挺好想的一道最短路 与uva一道自行车车轮有几个轮子的那题很像 用二维状态表示一个点 即它的标号和它的速度 代码: 阅读全文
摘要:
题解: 网络流求最小割 平面图转对偶图裸题 注意细节就可以了,n or m=1特判 代码: 阅读全文
摘要:
题解: 显然当一个图上的点是一个环时能满足题目要求 那么我们来考虑怎么形成一个环 很显然的是要先缩点 缩完点就成为了森林,如何让森林成环呢? 考虑一下环上的点的入度出度一定都大于1 而连一条边可以增加某个点的入度和某个点的出度 问题就变成了求入度为0或者出度为0的最大值 代码: 阅读全文
摘要:
一道神奇的题目。。 经过证明,当s-t的最小割是x的时候,那被分成的两部分之间的最小割都是x 然后只要dfs一遍那些节点没有满流就能判断被分出来的两部分 阅读全文
摘要:
链接:http://poj.org/problem?id=2391 题解: 二分答案,变成判定性问题,只需把能经过的边在当前图中联通 另外对牛和牛棚要拆点 代码: 阅读全文
摘要:
链接:https://www.luogu.org/problemnew/show/P4174 题解: 最大权闭合子图裸题 常规连边,砍掉一条边代表不干这件事情 在这题中的体现就是,抉择和顾客间连INF,代表不会被砍 顾客和t连收益,砍了说明没收益 源和花费连边,砍了说明没花费 注意一下数组的大小就可 阅读全文
摘要:
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2561 题解: 这题竟然是网络流。。。 考虑kruskal,先把比x小的边加入,只有在此之前u,v不连通那么才有用,所以其实就是最小割 大的边同理 两次答案相加就是结果(因为两次删的边不会重复) 阅读全文
摘要:
题解: 考虑建立一个分层图,从s向猪圈连边,容量为初始容量, 猪圈向第一个顾客连边,容量为INF 顾客向汇点连边,容量为购买量 这样一轮就搞完了,考虑下一个顾客 由于上一轮被顾客访问的猪圈都互通了,那么可以新开一个节点 从上一次的猪圈向这个新的点连边INF 从这个点向这一轮的猪圈连边INF, 最后再 阅读全文
摘要:
题解: 显然第一维可以排序 1.cdq分治 考虑前一半对后一半的影响 只需将左右两半排序,然后第三维树状数组维护就行 注意的是对于相同元素要好好处理 1是要把相同元素去重 2是排序的时候要注意 代码: 2.线段树套平衡树 显然可以用这个维护每一个数之前有几个 阅读全文
摘要:
题解: 考场实际得分:45 重新看了一下,发现至少80分是很好拿的 对于前30% 暴力 另20% 显然离线搞一下就可以了(大概当初连离线是啥都不知道) 另另30%其实只要维护第一行和最后一列就可以了,显然可以用splay来完成加点删点 满分做法: 1 .splay(是看了题解才知道了) 类似线段树的 阅读全文
摘要:
题目链接:https://www.luogu.org/problemnew/show/P3380 这题解法真是多,各种数据结构的模板练习题啊。。(在此之前下面四个一个都不会) 查询k在区间内的排名 查询区间内排名为k的值 修改某一位值上的数值 查询k在区间内的前驱(前驱定义为严格小于x,且最大的数, 阅读全文
摘要:
线段树套线段树模板题 链接:http://poj.org/problem?id=2155 题解: 代码: 阅读全文
摘要:
链接:https://www.luogu.org/problemnew/show/P2596 题解: 写了两天的平衡树终于大概弄好了所有模板(模板不熟写错debug真是要死) 对于放在头尾,只需要删除,再在头/尾插入就可以了 对于交换,就交换一下映射 代码: 阅读全文
摘要:
1.updata 2.rotate 3.splay 4.search 5.build 6.insert 7.pre 8. print 9.delete2 10.query 阅读全文
摘要:
链接:https://www.luogu.org/problemnew/show/P1110 题解: 一道不错的模板题 对于第一个询问,只需维护一个支持删除的堆 方法1.再维护一个堆,将删除的数加入这个堆,每次取元素时判断一下是否和另一个堆相等 方法2.利用左偏树可以删除任意节点(太久不写都忘了) 阅读全文
摘要:
链接:https://www.luogu.org/problemnew/show/P2042 题解: 写模板这道题的时候遇到一些错误 1.对于元素初始化,又没写全面 2.max_pre 没有更新当前点 3.search里面少down了 注意点非常多的一道题 首先维护最大序列和可以类似线段树,维护ma 阅读全文