bzoj
guapisolo
已经弃掉CSDN转博客园了https://www.cnblogs.com/guapisolo/
展开
-
bzoj 1036 树的统计Count (树链剖分+线段树)
题目大意:给你一棵树,每个点都有点权有3种操作,修改某节点的权值,求树链上节点的权值的最大值,求树链上节点的权值和树剖裸题,搜一个树链剖分序,用线段树维护一下即可,总时间#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#define i...原创 2018-09-01 09:26:48 · 111 阅读 · 0 评论 -
bzoj 2754 [SCOI2012]喵星球上的点名 (AC自动机+map维护Trie树)
题目大意:略由于字符集大,要用map维护Trie树并不能用AC自动机的Trie图优化,不然内存会炸所以我用AC自动机暴跳fail水过的显然根据喵星人建AC自动机是不行的,所以要根据问题建然而这题有一些很艮的地方:1.如果一个喵的名和姓都被点到,那他只被点到了一次2.询问的串可能相同3.如果map中并不包含某个元素,但你强行用数组表示它,那么它会返回0,然后这个元素会...原创 2018-09-23 12:18:48 · 184 阅读 · 0 评论 -
bzoj 1030 [JSOI2007]文本生成器 (Trie图+DP)
题目大意:给你一堆字符串,一个串不合法的条件是这些字符串中任意一个是这个串的子串,求合法的串的数量其实这道题比 [HNOI2008]GT考试 那道题好写一些,但道理是一样的只不过这道题的答案可以转化为 所有可能的字符串(26^m)数量 - 不合法的字符串数量定义f[i][j]表示匹配到了第i个字符,现在在Trie树上匹配到了第j个节点的方案数GT考试是跳Next,每次找出 和 插入...原创 2018-09-22 19:54:29 · 197 阅读 · 0 评论 -
bzoj 2631 [国家集训队]Tree II (LCT)
题目大意:给你一棵树,让你维护一个数据结构,支持边的断,连树链上所有点点权加上某个值树链上所有点点权乘上某个值求树链所有点点权和 (辣鸡bzoj又是土豪题,洛谷P1501传送门)LCT裸题,下传标记,搞法类似于洛谷线段树模板2先下传乘法标记,val,sum,乘法标记,加法标记都要乘再下传加法标记,val,加法标记直接加,sum应该加上子树size*加的值 ...原创 2018-09-13 21:05:07 · 122 阅读 · 0 评论 -
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 · 96 阅读 · 0 评论 -
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 · 126 阅读 · 0 评论 -
bzoj 1717 [USACO06DEC] Milk Patterns (后缀数组+二分)
题目大意:求可重叠的相同子串数量至少是K的子串最长长度 洛谷传送门依然是后缀数组+二分,先用后缀数组处理出height每次二分出一个长度x,然后去验证,在排序的后缀串集合里,有没有连续数量多于K个串的长度>=x,但据说有一种高端做法是把二分换成单调队列,能减少常数,可惜我并没有看懂......原题好像是哈希的骚操作,但网上的题解好像都是后缀数组......比上一道男...原创 2018-09-24 16:39:49 · 158 阅读 · 0 评论 -
bzoj 4530 [BJOI2014]大融合 (LCT)
题目大意:给你一棵树,树的边是一条一条连上去的洛谷P4219传送门 LOJ#2230传送门在连边的过程中询问某条边的“负载”,即能通过这条边的所有不同的路径的数量LCT动态维护当前节点的子树大小size记录该节点的虚子树的大小之和,sum记录该节点为根节点的子树大小更换虚子节点时,或者连上新的虚子树时,即access和link操作,要注意更新size#include &l...原创 2018-09-14 19:31:10 · 121 阅读 · 0 评论 -
bzoj 3510 首都 (LCT)
洛谷P4299传送门题目大意:给你一颗树,边是一条一条连上去的在连接过程中会存在询问,询问当前节点所在联通块(其实是一颗树)的重心是哪个节点以及森林中所有树的重心的异或和在做这道题之前,要先了解树的重心的一个性质:两棵树合并时,新树的重心在合并后,原来两颗树的重心的两个节点构成的那条链上了解了这条性质,思路就不难想了当连接两个节点时,先寻找它们所在原树的重心,然后连接这...原创 2018-09-15 15:34:52 · 146 阅读 · 0 评论 -
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 · 258 阅读 · 0 评论 -
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 · 168 阅读 · 0 评论 -
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 · 97 阅读 · 0 评论 -
bzoj 3932 [CQOI2015]任务查询系统 (主席树)
题目大意:有n个任务,有起始时间si和结束时间ei,以及该任务重要度pi,求某时刻xi正在进行的任务中,重要度前ki小任务的重要度之和本以为是一道主席树的水题,可我调了半个多小时才调出来,原来是我新建的主席树根的左右儿子并没继承上个版本,导致某些时刻并没有任何刚开始或刚结束的任务,而在这个时间却找不到这个时刻对应的主席树。然而我只有80分看了题解,发现我忽略了一种情况,当很多个任务重要...原创 2018-09-06 21:12:09 · 137 阅读 · 0 评论 -
bzoj 1878 HH的项链 (树状数组+离线)
题目大意:给你一个序列,求某区间出现不同的数的个数。貌似离线树状数组是最好的解法先把所有询问挂在它们询问的右端点上然后从头到尾遍历这个序列,记录这个位置的值上一次出现的位置那么,当遍历到第i位时,如果a[i]在之前出现过,就在它上一次出现的位置-1这个操作的意义是,第i位已经有a[i]了,那么上一次出现a[i]的位置已经失去意义接着在这个位置+1,更新last[a[i]]。...原创 2018-09-01 10:42:21 · 131 阅读 · 0 评论 -
bzoj 3307 雨天的尾巴 (树上差分+线段树合并)
题目大意:给你一棵树,树上一共n个节点,共m次操作,每次操作给一条链上的所有节点分配一个权值,求所有节点被分配到所有的权值里,出现次数最多的权值是多少,如果出现次数相同就输出最小的。(我辣鸡bzoj的权限号,洛谷上P4556也有这道题)线段树合并入门题也是比较常规的树上链的点差分 每次操作都在x,y上+1,在lca(x,y),fa[lca(x,y)]上-1然后对每个点的所有差分操作...原创 2018-09-01 23:08:57 · 306 阅读 · 0 评论 -
bzoj 4026 dC Loves Number Theory (主席树+数论+欧拉函数)
题目大意:给你一个序列,求出指定区间的(l<=i<=r) mod 1000777 的值还复习了欧拉函数以及线性筛逆元考虑欧拉函数的的性质,(l<=i<=r),等价于 (p[j]是区间内所有出现过的质数)那么考虑找出区间内所有出现过的质数,这思路和HH的项链是不是很像??由于此题强制在线,所以把树状数组替换成了主席树而已原来我以前写的主席树一直都是错的.....原创 2018-09-04 20:01:26 · 256 阅读 · 0 评论 -
bzoj 3786 星系探索 (splay+dfs序)
题目大意:给你一棵树,支持一下三种操作1.获取某节点到根节点的路径上所有节点的权值和2.更换某棵子树的父亲3.某子树内所有节点的权值都增加一个值w当时想到了splay维护dfs序,查完题解发现思路是对的,然后我就写了足足6个小时才Ast[x]代表入栈时间,ed[x]代表出栈时间对于第一个操作,每个树上节点在splay中都有两个位置,分别对应入栈出栈序,然后把入栈的点权*1,...原创 2018-09-08 00:17:45 · 153 阅读 · 0 评论 -
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 · 113 阅读 · 0 评论 -
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 · 122 阅读 · 0 评论 -
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 · 135 阅读 · 0 评论 -
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 · 132 阅读 · 0 评论 -
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 · 113 阅读 · 0 评论 -
bzoj 1014 [JSOI2008]火星人prefix (splay+二分答案+字符串hash)
题目大意:维护一个字符串,支持插入字符和替换字符的操作,以及查询该字符串两个后缀的最长公共前缀长度乍一看以为是后缀数组,然而并没有可持久化后缀数组(雾) 看题解才知道这是一道splay题,首先要对splay维护区间信息有一定了解splay维护,插入字符,替换字符而它的字树内所有儿子的中序遍历的hash值也可以通过splay维护 (这个推导式似乎烂大街了)而后缀就是把i-1拎...原创 2018-09-06 21:01:10 · 152 阅读 · 0 评论 -
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 · 214 阅读 · 0 评论