- 博客(63)
- 收藏
- 关注
原创 bzoj 5249 [九省联考2018]iiidx (线段树+贪心)
题目大意:给你一个序列,让你对它重新排列,保证a[i]<=a[i/k],求字典序最大的排列洛谷传送门把i/k和i连边,发现形成了一个类似于小根堆的树形结构先是一个错误的贪心:贪心每次选择前size[x]大个数依次填到树里这种方法在有重复数字的时候会出锅,比如1112,如果用上面的方法就是1112,但正确的是1121原因呢,就是填满一颗子树内并不一定要用完偏大的,可能和子树...
2018-10-09 15:42:28
234
原创 bzoj 1499 [NOI2005]瑰丽华尔兹 (单调队列优化DP)
题目大意:给你一个n*m棋盘(n,m<=200),有一个人从给定的点s,e出发,有一些坏点不能走,一共给定k段连续的时间(k<=200),在某一段时间之内它只能向一个给定的方向移动,在某一时刻,它可以移动或者不移动。求碰到坏点之前/总时间结束时,最长移动的距离。朴素DP的方法是: 表示在时间点t时,在位置(i,j)时已经走过的最长距离,i' j'表示这一步移动前的位置得到方...
2018-10-06 10:18:22
222
原创 一些乱七八糟的数学结论
1.错位排序的公式推导:错位排序数列:1,2,9,44,265......给出一个1~n的排列,现在把它打乱,让每一位上的数和它的标号都不相同,求所有的打乱方案数考虑1~n的全排列的数量,是那么,当某一位上的数和它的标号相同(其他位是否相同先不考虑)的情况,那么打乱方案数是可以看错把这一位去掉,剩下的数任意排列的方案数,一共n位,总数量就是发现会多减掉有两位都标号相同的情况...
2018-10-05 11:27:16
272
原创 NOIP 2017 时间复杂度 (模拟)
题目大意:略傻了吧唧的我wa了好几次我的模拟功底真的不咋地linux下用gets会报错,我用的fgets#include <string>#include "stdio.h"#include <cstring>#include <iostream>#include <algorithm>#define ll long lo...
2018-10-01 09:55:55
317
原创 NOI 2018 屠龙勇士 (中国剩余定理+exgcd)
题目大意:略真是一波三折的一道国赛题,先学了中国剩余定理,勉强看懂了模板然后写的这道题把取出的宝剑攻击力设为T,可得Ti*x=ai(mod pi),这显然是ax=c(mod b)的形式这部分用exgcd求解x的最小正整数解先把a,b,c除以gcd(a,b),如果c不能整除gcd(a,b)那么无解。此时a,b互质,用exgcd求得a的逆元,逆元乘回来gcd(a,b)就是x的最小正整数...
2018-09-29 15:28:41
414
原创 中国剩余定理(excrt) 模板
excrt板子题#include <cmath>#include <cstdio>#include <cstring>#include <algorithm>#define ll long long #define N 100010#define rint register int#define ll long long #de...
2018-09-28 18:21:05
165
原创 后缀自动机 模板
SAM板子,没什么好说的建出来SAM然后跑个DFS统计答案就行了 #include <cmath>#include <cstdio>#include <cstring>#include <algorithm>#define ll long long #define N 3010#define rint register int...
2018-09-27 19:23:15
84
原创 NOI 2015 品酒大会 (后缀数组+并查集)
题目大意:略40分暴力还是很好写的,差分再跑个后缀和 和 后缀最大值就行了一种正解是后缀数组+并查集但据说还有后缀数组+单调栈的高端操作蒟蒻的我当然不会后缀数组求出height,然后从大到小排个序,那么每次把最大height的两个后缀放到一个并查集里这样,每次根据height合并两个并查集的时候,一个并查集任何一个后缀和另一个并查集任何一个后缀的LCP长度都是height[i]...
2018-09-26 19:10:01
138
原创 NOI 2016 优秀的拆分 (后缀数组)
题目大意:给你一个字符串,求所有子串的所有优秀拆分总和,优秀的拆分被定义为一个字符串可以被拆分成4个子串,形如AABB,其中AA相同,BB相同,AB也可以相同作为一道国赛题,95分竟然就这么给我们了!只是一个NOIP难度的哈希套DP啊......95分就是从后往前找,统计AA串,每次统计一下从这个位置开始的所有子串 和 紧随其后的等长串 相同的个数sumhash(i,i+j-1)==h...
2018-09-26 15:01:39
187
原创 poj 2774 Long Long Message (后缀数组+二分)
题目大意:求两个字符串的最长公共子串长度把两个串接在一起,中间放一个#,然后求出height接下来是老套路,二分出一个答案ans,然后去验证,如果有连续几个位置的h[i]>=ans,且存在sa[i]的最大值在第二个串里,最小值在第一个串里,说明答案成立别再把后缀数组敲错了#include <cmath>#include <cstdio>#incl...
2018-09-25 16:31:16
92
原创 bzoj 1717 [USACO06DEC] Milk Patterns (后缀数组+二分)
题目大意:求可重叠的相同子串数量至少是K的子串最长长度 洛谷传送门依然是后缀数组+二分,先用后缀数组处理出height每次二分出一个长度x,然后去验证,在排序的后缀串集合里,有没有连续数量多于K个串的长度>=x,但据说有一种高端做法是把二分换成单调队列,能减少常数,可惜我并没有看懂......原题好像是哈希的骚操作,但网上的题解好像都是后缀数组......比上一道男...
2018-09-24 16:39:49
171
原创 poj 1743 [USACO5.1] Musical Theme (后缀数组+二分)
洛谷P2743传送门题目大意:给你一个序列,求其中最长的一对相似等长子串一对合法的相似子串被定义为:1.任意一个子串长度都大于等于52.不能有重叠部分3.其中一个子串可以在全部+/-某个值后和另一个串完全相同还是老套路了,其实只要求出每一项和前一项的差值序列,这样第三个问题可以被转化为求最长不重叠的相同子串,最后把答案+1就行了这道题竟然还是LTC大佬的男人八题!正解是...
2018-09-24 12:48:43
112
原创 bzoj 2754 [SCOI2012]喵星球上的点名 (AC自动机+map维护Trie树)
题目大意:略由于字符集大,要用map维护Trie树并不能用AC自动机的Trie图优化,不然内存会炸所以我用AC自动机暴跳fail水过的显然根据喵星人建AC自动机是不行的,所以要根据问题建然而这题有一些很艮的地方:1.如果一个喵的名和姓都被点到,那他只被点到了一次2.询问的串可能相同3.如果map中并不包含某个元素,但你强行用数组表示它,那么它会返回0,然后这个元素会...
2018-09-23 12:18:48
189
原创 bzoj 1030 [JSOI2007]文本生成器 (Trie图+DP)
题目大意:给你一堆字符串,一个串不合法的条件是这些字符串中任意一个是这个串的子串,求合法的串的数量其实这道题比 [HNOI2008]GT考试 那道题好写一些,但道理是一样的只不过这道题的答案可以转化为 所有可能的字符串(26^m)数量 - 不合法的字符串数量定义f[i][j]表示匹配到了第i个字符,现在在Trie树上匹配到了第j个节点的方案数GT考试是跳Next,每次找出 和 插入...
2018-09-22 19:54:29
208
原创 bzoj 1009 [HNOI2008]GT考试 (KMP+矩阵乘法)
题目大意:给定一个由数字构成的字符串A(len<=20),让你选择一个长度为n(n是给定的)字符串X,一个合法的字符串X被定义为,字符串X中不存在任何一段子串与A完全相同,求互不相同的合法的字符串L的数量第一眼看就没啥思路....瞅了一眼题解,是KMP优化DP,然后再用矩阵优化DP思路还是不难的,首先用KMP求出原字符串的next数组,再用next转移定义f[i][j]是当前X串...
2018-09-22 11:02:08
269
原创 NOI 2011 阿狸的打字机 (AC自动机+dfs序+树状数组)
题目大意:略(太长了不好描述) 良心LOJ传送门先对所有被打印的字符串建一颗Trie树观察数据范围,并不能每次打印都从头到尾暴力建树,而是每遍历到一个字符就在Trie上插入这个字符,然后记录每次打印后字符串最后一个字符在Trie树上的位置 然后建立AC自动机,再建立Fail树。注意还要另外存一下原来Trie树的结构Fail树就是把Fail指针倒着跑,因为每个点只有一个Fail指...
2018-09-20 15:08:34
139
原创 NOI 2015 寿司晚宴 (状压DP+分组背包)
题目大意:两个人从2~n中随意取几个数(不取也算作一种方案),被一个人取过的数不能被另一个人再取。两个人合法的取法是,其中一个人取的任何数必须与另一个人取的每一个数都互质,求所有合法的方案数(数据范围毕竟很小,乍一看也不是啥打表找规律的题)和我之前做过的一道题很类似hdu 6125,但这道题由于题面看起来很玄学,所以正解更难想但还是 状压DP+分组背包 的套路因为500以内的任何一...
2018-09-19 23:42:32
185
原创 NOI 2018 归程 (Kruskal重构树)
题目大意:太长了,略Kruskal重构树,很神奇的一个算法吧如果两个并查集被某种条件合并,那么这个条件作为一个新的节点连接两个并查集那么在接下来的提问中,如果某个点合法,它的所有子节点也都合法,即子节点的限制少于父节点#include <cstdio>#include <algorithm>#include <cstring>#inclu...
2018-09-19 14:58:29
121
原创 模板 NTT 快速数论变换
NTT裸模板,没什么好解释的这种高深算法其实也没那么必要知道原理#include <cstdio>#include <cstring>#include <algorithm>#define N (1<<17)+10#define ll long long using namespace std;ll inv3,invl;in...
2018-09-19 14:16:13
263
原创 模板 FFT 快速傅里叶变换
FFT模板,原理不难,优质讲解很多,但证明很难看太不懂这模板题在bzoj竟然是土豪题,服了#include <cmath>#include <cstdio>#include <cstring>#include <algorithm>#define dd double #define ll long long#define N (...
2018-09-18 20:56:45
188
原创 bzoj 3510 首都 (LCT)
洛谷P4299传送门题目大意:给你一颗树,边是一条一条连上去的在连接过程中会存在询问,询问当前节点所在联通块(其实是一颗树)的重心是哪个节点以及森林中所有树的重心的异或和在做这道题之前,要先了解树的重心的一个性质:两棵树合并时,新树的重心在合并后,原来两颗树的重心的两个节点构成的那条链上了解了这条性质,思路就不难想了当连接两个节点时,先寻找它们所在原树的重心,然后连接这...
2018-09-15 15:34:52
153
原创 bzoj 4530 [BJOI2014]大融合 (LCT)
题目大意:给你一棵树,树的边是一条一条连上去的洛谷P4219传送门 LOJ#2230传送门在连边的过程中询问某条边的“负载”,即能通过这条边的所有不同的路径的数量LCT动态维护当前节点的子树大小size记录该节点的虚子树的大小之和,sum记录该节点为根节点的子树大小更换虚子节点时,或者连上新的虚子树时,即access和link操作,要注意更新size#include &l...
2018-09-14 19:31:10
130
原创 bzoj 3282 Link Cut Tree (LCT)
题目大意:维护一个森林,支持边的断,连,修改某个点的权值,求树链所有点点权的异或和洛谷P3690传送门搞了一个下午终于明白了LCT的原理#include <cstdio>#include <algorithm>#include <cstring>#define root d[0].ch[1]#define il inline#define...
2018-09-13 21:14:06
138
原创 bzoj 2049 [SDOI2008]洞穴勘测 (LCT)
题目大意:维护一个森林,支持边的断,连,以及查询连通性LCT裸题 洛谷P2147传送门1A了,给自己鼓鼓掌#include <cstdio>#include <algorithm>#include <cstring>#define il inline#define inf 500000#define N 10100using names...
2018-09-13 21:10:12
102
原创 bzoj 2631 [国家集训队]Tree II (LCT)
题目大意:给你一棵树,让你维护一个数据结构,支持边的断,连树链上所有点点权加上某个值树链上所有点点权乘上某个值求树链所有点点权和 (辣鸡bzoj又是土豪题,洛谷P1501传送门)LCT裸题,下传标记,搞法类似于洛谷线段树模板2先下传乘法标记,val,sum,乘法标记,加法标记都要乘再下传加法标记,val,加法标记直接加,sum应该加上子树size*加的值 ...
2018-09-13 21:05:07
130
原创 Link Cut Tree 动态树 小结
动态树有些类似 树链剖分+并查集 的思想,是用splay维护的lct的根是动态的,"轻重链"也是动态的,所以并没有真正的轻重链动态树的操作核心是把你要把 修改/询问/... 等等一系列的操作的树链放到一个splay里,然后用splay根据相对深度大小来维护这个树链lct利用了splay的神奇性质,通过"认爹不认子"来达到记录多个子树的目的lct的核心,access函数的意义是,在从...
2018-09-13 19:04:39
120
原创 bzoj 1500 [NOI2005]维修数列 (splay)
题目大意:略调了好久终于过了!我犯了一个错误,虽然我记得在翻转pushdown的时候交换lx和rx但我应该翻转的是左儿子和右儿子的lx和rx!而不是当前节点的lx和rx因为pushup的时候是根据左右儿子的lx和rx更新的!还有就是在find的时候下传标记,在转到根的时候pushup很丧病的题然后我的代码在洛谷上过了,可bzoj上迷之CE了,害得我的提交记录里多了13%...
2018-09-12 17:59:27
103
原创 bzoj 4518 [Sdoi2016]征途 (斜率优化DP)
我犯了sb错误然后调了1个小时......队列写错了斜率k递增,b取最小值,队列维护凸包即可f[0]的预处理好像有些奇怪???我把inf调大就过了???#include <cstdio>#include <algorithm>#include <cstring>#define il inline#define ll long long#d...
2018-09-12 15:15:59
118
原创 bzoj 1010 [HNOI2008]玩具装箱toy (斜率优化DP)
队列维护下凸包裸题式子不太好推,但其实不用把式子全展开的.....k单调递增,x单调递增,队列维护一下就行了因为f[i]期望最小值,所以维护下凸包好像记录一下凸包的坐标能减少常数#include <cstdio>#include <algorithm>#include <cstring>#define il inline#defin...
2018-09-11 20:21:12
127
原创 bzoj 1911 [Apio2010]特别行动队 (斜率优化DP)
斜率优化DP裸题,DP方程很简单就不给了优化一下,整理式子成y=kx+b的形式发现x单调递增,斜率k单调递减,用一个队列维护凸包就行啦f[i]和b成正比,而f[i]期望最大值,所以维护上凸包#include <cstdio>#include <algorithm>#include <cstring>#define il inline#d...
2018-09-11 18:59:37
119
原创 bzoj 3437 小P的牧场 (斜率优化DP)
题目大意:有n牧场排成一行,标号从1~n,每个牧场都可以放一个控制站,在第i个牧场放控制站需要花费a[i],控制站能够控制从它开始一直到它左边最靠近它的控制站之间的所有牧场,每个牧场放养量是b[i],这个牧场被它右侧离它最近控制站控制所需要支出的花费是它到牧场的距离d*b[j],在保证所有牧场都被控制的情况下,求最小花费定义f[i]是在第i个牧场放控制站的最小花费设j是上一个控制站的位置,...
2018-09-10 18:36:23
175
原创 bzoj 3786 星系探索 (splay+dfs序)
题目大意:给你一棵树,支持一下三种操作1.获取某节点到根节点的路径上所有节点的权值和2.更换某棵子树的父亲3.某子树内所有节点的权值都增加一个值w当时想到了splay维护dfs序,查完题解发现思路是对的,然后我就写了足足6个小时才Ast[x]代表入栈时间,ed[x]代表出栈时间对于第一个操作,每个树上节点在splay中都有两个位置,分别对应入栈出栈序,然后把入栈的点权*1,...
2018-09-08 00:17:45
162
原创 bzoj 3932 [CQOI2015]任务查询系统 (主席树)
题目大意:有n个任务,有起始时间si和结束时间ei,以及该任务重要度pi,求某时刻xi正在进行的任务中,重要度前ki小任务的重要度之和本以为是一道主席树的水题,可我调了半个多小时才调出来,原来是我新建的主席树根的左右儿子并没继承上个版本,导致某些时刻并没有任何刚开始或刚结束的任务,而在这个时间却找不到这个时刻对应的主席树。然而我只有80分看了题解,发现我忽略了一种情况,当很多个任务重要...
2018-09-06 21:12:09
143
原创 bzoj 1014 [JSOI2008]火星人prefix (splay+二分答案+字符串hash)
题目大意:维护一个字符串,支持插入字符和替换字符的操作,以及查询该字符串两个后缀的最长公共前缀长度乍一看以为是后缀数组,然而并没有可持久化后缀数组(雾) 看题解才知道这是一道splay题,首先要对splay维护区间信息有一定了解splay维护,插入字符,替换字符而它的字树内所有儿子的中序遍历的hash值也可以通过splay维护 (这个推导式似乎烂大街了)而后缀就是把i-1拎...
2018-09-06 21:01:10
160
原创 bzoj 3524 [POI2014]KUR-Couriers (主席树)
题目大意:给你一个序列,求某个区间出现次数大于一半的数是什么主席树裸题,刷刷水题提升自信= =#include <cstdio>#include <cstring>#include <algorithm>#define ll long long #define il inline#define N 500100using namespac...
2018-09-05 21:02:55
138
原创 bzoj 4942 NOI2017 整数 (压位+线段树)
题目大意:让你维护一个数x(x位数<=3*1e7),要支持加/减a*2^b,以及查询x的第i位在二进制下是0还是1作为一道noi的题,非常考验写代码综合能力,敲+调+借鉴神犇的代码 3个多小时才过...思路并不难,题目里b<=30n暗示压位,每次压30位可过先分析一下加法,加a*2^b相当于在第b-1位加a,如果进位了(即>),那就在下一位+1,如果下一位还进位了,那...
2018-09-05 20:10:07
144
原创 bzoj 4026 dC Loves Number Theory (主席树+数论+欧拉函数)
题目大意:给你一个序列,求出指定区间的(l<=i<=r) mod 1000777 的值还复习了欧拉函数以及线性筛逆元考虑欧拉函数的的性质,(l<=i<=r),等价于 (p[j]是区间内所有出现过的质数)那么考虑找出区间内所有出现过的质数,这思路和HH的项链是不是很像??由于此题强制在线,所以把树状数组替换成了主席树而已原来我以前写的主席树一直都是错的.....
2018-09-04 20:01:26
260
原创 bzoj 3307 雨天的尾巴 (树上差分+线段树合并)
题目大意:给你一棵树,树上一共n个节点,共m次操作,每次操作给一条链上的所有节点分配一个权值,求所有节点被分配到所有的权值里,出现次数最多的权值是多少,如果出现次数相同就输出最小的。(我辣鸡bzoj的权限号,洛谷上P4556也有这道题)线段树合并入门题也是比较常规的树上链的点差分 每次操作都在x,y上+1,在lca(x,y),fa[lca(x,y)]上-1然后对每个点的所有差分操作...
2018-09-01 23:08:57
311
原创 bzoj 1878 HH的项链 (树状数组+离线)
题目大意:给你一个序列,求某区间出现不同的数的个数。貌似离线树状数组是最好的解法先把所有询问挂在它们询问的右端点上然后从头到尾遍历这个序列,记录这个位置的值上一次出现的位置那么,当遍历到第i位时,如果a[i]在之前出现过,就在它上一次出现的位置-1这个操作的意义是,第i位已经有a[i]了,那么上一次出现a[i]的位置已经失去意义接着在这个位置+1,更新last[a[i]]。...
2018-09-01 10:42:21
138
原创 bzoj 1036 树的统计Count (树链剖分+线段树)
题目大意:给你一棵树,每个点都有点权有3种操作,修改某节点的权值,求树链上节点的权值的最大值,求树链上节点的权值和树剖裸题,搜一个树链剖分序,用线段树维护一下即可,总时间#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#define i...
2018-09-01 09:26:48
118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人