BZOJ
文章平均质量分 68
neither_nor
这个作者很懒,什么都没留下…
展开
-
BZOJ4516 [Sdoi2016]生成魔咒
后缀自动机裸题,建的时候直接用max维护一下本质不同子串数量即可置于为什么在新建nq节点的时候不需要更新ans,因为写一下会发现nq,q,fa[q]的mx都被加了一次又减了一次,抵消了原创 2016-04-30 13:41:22 · 1097 阅读 · 0 评论 -
BZOJ4568 [Scoi2016]幸运数字
树上查两点间最大异或和树倍增,每个点维护向上2^k个点的线性基,然后在查lca的时候合并关于点权维护倍增略蛋疼-_-合并线性基的时候就直接把一个线性基里的插到另一个里复杂度O(m log n log^2INF)合并的时候加点优化可以降掉一个logINF接下来bb一些有关线性基和最大异或和的东西……首先线性基是一个拟阵,遗传性显然,交换性可以把大的里边找一个小的里没有的位原创 2016-05-10 11:04:18 · 2781 阅读 · 1 评论 -
bzoj4567 [Scoi2016]背单词
这题的题意真是难于理解意思就是挨个放单词,放每个单词之前一定把这个单词的后缀都先放上去,每个单词的代价等于这个单词的位置减去上一个出现的这个单词的后缀的位置第一个条件是没用的,因为如果触发这个条件一定不是最优的然后嘛,我们把串反一下,建一颗trie,把除了根意外不是作为串的结尾的没用的点去掉,这样就变成了一颗树,问题转化为给树上每个点标号,每个点的标号大于其父亲的编号,每个点代价为他的原创 2016-05-10 13:42:24 · 2601 阅读 · 0 评论 -
BZOJ4570 [Scoi2016]妖怪
每个妖怪在指定环境下攻击和防御的变化量比值是一个定值,所以我们可以把妖怪看成平面上的点,横纵坐标为攻击和防御,对于每个妖怪环境看成一条k=-b/a的过该妖怪直线,每个妖怪的战斗力就是x=0时y的值加上y=0时x的值所以我们要维护一个右上凸壳,用一条直线卡这个凸壳,假设卡到的妖怪是(x,y),我们可以用x+y-kx-y/k更新答案对于每个单独妖怪,战斗力=x+y-kx-y/k,对勾函数,当k原创 2016-05-11 08:10:09 · 2205 阅读 · 0 评论 -
BZOJ4569 [Scoi2016]萌萌哒
一眼觉得是并查集,yy了一下线段树优化发现不可sing,orz了ljss神犇被告知是倍增优化倍增,一个点[i][j]代表某个i往后2^j个数,把点按倍增次数分层,两个同层的点在一个连通块说明两个点所代表的区间相等把每个操作拆到logn个点上,两两用并查集合并然后从高层向低层下传,设当前层为j,假设x1,x2,x3……xt在一个连通块中,则将x2到xt的左儿子(即第j-1层的x)都与x1原创 2016-05-11 11:27:53 · 1346 阅读 · 1 评论 -
BZOJ4475 [Jsoi2015]子集选取
一看题,妈呀不会啊,找找规律吧,打表好麻烦啊,前两天xuruifan看代码长度猜出了题意,要不我看样例猜规律吧,一看根子集有关,果断2^n,2^2=4?样例得16?再来个^k交一发,过了-_-#includeusing namespace std;#define MOD 1000000007#define ll long longll mi(ll x,ll y){ ll原创 2016-04-29 14:18:42 · 1385 阅读 · 0 评论 -
BZOJ4523 [Cqoi2016]路由表
这真TM是语文题啊,简直就是作为意志与表象的世界,你几分钟能看懂题?简述一下题意吧,两种操作,支持在字符串序列末尾加入一个串,支持给你一个串s,最优匹配串定义为能作为s前缀的且最长的加入的串,按顺序把每个加入的串xi与s匹配,如果xi是s的前缀并且xi的长度比当前最优匹配串长,就把最优匹配串设成xi,问在第l个到第r个串之间最优字符串改变了多少次……我语文也不咋地看一眼还以为需要可持久原创 2016-04-29 14:28:37 · 714 阅读 · 0 评论 -
BZOJ1023 [SHOI2008]cactus仙人掌图
仙人掌DP,f[i]表示i的子仙人掌里以i为一个端点走最短路的最长链dfs一颗仙人掌,带上tarjan的low和dfn,对于一个点,如果是这个环的根,用这个环上的所有点转移,如果不是这个环的根,不用这个环上的点转移。#include#include#include#include#include#include#include#include#include#includ原创 2016-04-29 14:59:36 · 1012 阅读 · 0 评论 -
BZOJ4316 小C的独立集
仙人掌DP,套路还是1023的套路,dp式也还是比较水,f[i][0]表示i的子仙人掌的最大独立集,i不选,f[i][1]表示i的子仙人掌的最大独立集,i选,做环的时候强制令第一个点选或不选做两次不过交到1040WA了是什么情况#include#include#include#include#include#include#include#include#include#原创 2016-04-29 15:06:00 · 980 阅读 · 0 评论 -
BZOJ1071 [SCOI2007]组队
这题好神……上学期某天和ljss做了这题,前两天commonc做,结果我俩都只记得这是一道神题……看了会代码终于想起来自己当时觉着这题神就是因为用俩指针扫了俩数组一个添加一个删除还能不重不漏我们先把数组复制一遍,同时给每个运动员一个sum值代表A*h+B*s,a数组按h排序,b数组按sum排序按任意顺序枚举v的最小值,不妨直接在a数组里枚举对于每次外层枚举,令l和r=0然后在a原创 2016-04-29 15:21:41 · 1293 阅读 · 0 评论 -
BZOJ3028 食物
跟xuruifan小犇学习了生成函数,感觉好神啊对于一个数列a1,a2,a3,a4....,其生成函数就是a1+a2*x+a3*x^2+a4*x^3.....对于一种物品,造一个序列,如果这种物品可以选x个,那么第x项就是1,否则就是0,对这个序列求生成函数把所有生成函数相乘,次数为n的项的系数就是选一共n个物品的方案数,因为多项式相乘之后如果两个生成函数里两项次数分别为x,y,那么结原创 2016-05-24 18:50:23 · 681 阅读 · 0 评论 -
BZOJ4589 Hard Nim
造一个序列,凡是第m以内的素数项为1,否则为0,对这个序列求生成函数,相当于做n次异或卷积后求0次项的系数异或卷积嘛,普通卷积是一个sigma i+j=k,异或卷积就是sigma i^j=k求异或卷积用fwhtfwht请看picks博客这题fwht之后做快速幂,然后再fwht回来即可#include#include#include#include#include#in原创 2016-05-24 20:00:16 · 1499 阅读 · 2 评论 -
BZOJ4443 [Scoi2015]小凸玩矩阵
二分答案,若x可行,说明能取出n-k+1个小于等于x的数(为什么不是k个呢,因为是k大啊不是k小-_-)判断的话若(i,j)小于等于x,则第i行向第j列连边,然后跑最大流看是否大于等于n-k+1即可#include#include#include#include#include#include#include#include#include#include#includ原创 2016-05-11 17:36:58 · 1237 阅读 · 0 评论 -
BZOJ4535 [Hnoi2016]树
考虑每次复制操作,我们只需要知道复制这个子树的根以及原树就能知道新树里这一部分的形态,所以我们把每次复制操作复制的子树和最开始的一颗树都缩点,给每个缩点记录在原树里的根,父亲在原树里的编号。每个缩点和父亲缩点的距离为父亲在原树里与缩点父亲的根在原树里的距离+1,也就是这个缩点树的根到上一个缩点树的根在新树里的距离,维护原树和缩点树两个树倍增结构,询问的时候根据LCA在缩点树里的位置分类讨论即可原创 2016-04-29 13:49:30 · 841 阅读 · 0 评论 -
BZOJ4566 [Haoi2016]找相同字符
看一眼题,觉得和3473好像啊,然而3473我还没做呢……造一个广义后缀自动机,siz开成二维把两个串的siz分开来算,每个节点对答案的贡献为(mx[x]-mx[fa[x]])*siz[0][x]*siz[1][x]#include#include#include#include#include#include#include#include#include#includ原创 2016-04-29 13:23:07 · 1532 阅读 · 0 评论 -
BZOJ4540 [Hnoi2016]序列
和xuruifan讨论了半天,然后orz了一下网上题解“预处理一些东西,然后莫队”……于是YY了半天预处理啥终于YY了出来对于一次添加操作,会对答案做出一些贡献,在其他条件相同的情况下删除这个数的贡献和添加的贡献一样,在左边添加和在右边添加一样,所以我们只讨论在左边添加的情况首先单调栈预处理一下每个数左边和右边第一个比他小的数的位置,两个位置之间称为这个数的覆盖区间然后预处理一原创 2016-04-29 13:00:48 · 884 阅读 · 0 评论 -
BZOJ4571 [Scoi2016]美味
区间最大异或值的经典做法是可持久化trie,但是加上一个数的话可持久化trie就变得非常的扯淡考虑可持久化trie其实可以等价为一颗上限为2^k-1的主席树,在trie上确定一位其实相当于将答案的区间缩小的一半,也就是在主席树上向下走一层当所有数加上x之后,我们在主席树上走的时候就不能直接调用siz[son[x][0]],但是因为所有数都被加了,所以我们其实要查询的是左子树的区间向前窜x位原创 2016-05-11 20:56:12 · 1880 阅读 · 0 评论 -
BZOJ4563 [Haoi2016]放棋子
每行每列有一个障碍,所以我们发现任意交换两行或者两列对答案没有影响,不妨把障碍交换到主对角线位置,就变成了语法百题的错排问题设f[i]表示i个人的错排方案数f[0]=1f[1]=0f[i]=(f[i-1]+f[i-2])*(i-1)考虑地i个人怎么换,一种方法是与前i-1个人里的一个互换,这是f[i-2]*(i-1),另一种是拿第j个人的,并且第j个人不拿i的,在不考虑i的情况原创 2016-04-30 13:10:57 · 1597 阅读 · 0 评论 -
BZOJ4547 Hdu5171 小奇的集合
贪心,每次用最大和次大合成,当最大和次大都是正数的时候就可以矩乘算斐波那契前n项和了矩阵如下1 1 11 0 10 0 1第一列是i项,第二列是i-1项,第三列是和注意模不是1e9+7!#include#include#include#include#include#include#include#include#include#include#in原创 2016-04-30 13:22:23 · 919 阅读 · 0 评论 -
BZOJ4518 [Sdoi2016]征途
裸斜率优化#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 3010#define MAXM 10010#define INF原创 2016-04-30 13:28:53 · 1106 阅读 · 0 评论 -
BZOJ4517 [Sdoi2016]排列计数
序列里任意m个数稳定都是等价的,考虑不稳定的那几个就是裸错排所以错排*组合数即可f[n-m]*C(m,n)为什么今年省选都这么喜欢错排?错排递推试可以看这里#include#include#include#include#include#include#include#include#include#include#include#include#inc原创 2016-04-30 13:34:16 · 612 阅读 · 0 评论 -
BZOJ4545 DQS的trie
造一个广义后缀自动机,LCT维护即可,询问1可以在插入的时候直接维护#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 2000原创 2016-04-30 13:25:57 · 867 阅读 · 0 评论 -
BZOJ4514 [Sdoi2016]数字配对
把每个点拆成两个分别在左右两边,只要两两之间能发生关系就在左右之间连边,容量为无穷,费用为代价,源连左边每个点容量为数量,费用0,右边每个点连汇容量为数量,费用为零,跑费用流,流到费用为非负的极限,最小费用最大流贪心流是正确的,非负费用最大流贪心流也一定是正确的#include#include#include#include#include#include#include#inc原创 2016-04-30 13:44:12 · 1428 阅读 · 0 评论 -
BZOJ4503 两个串
orz xuruifan发discuss问题解……题解可以看这题discuss至于如何用FFT算卷积,我们写一下高精乘,用字母代表每一位,发现乘完了其实就是卷积的形式#include#include#include#include#include#include#include#include#include#include#include#include原创 2016-04-30 13:49:36 · 1638 阅读 · 0 评论 -
BZOJ2822 [AHOI2012]树屋阶梯
设f[i]表示i个阶梯的方案数,考虑你第一个踩上去的阶梯,他的高度一定为1,可以取1~i的长度,若其长度为j,搭在这一块上边的部分的方案数为f[j-1],不在上边部分的方案与f[i-j]一一对应(砍掉最底下一行),于是就是卡特兰数,质因数分解之后高精即可#include#include#include#include#include#include#include#include原创 2016-05-25 20:37:57 · 822 阅读 · 0 评论 -
BZOJ4561 [JLoi2016]圆的异或并
这题现场的时候n=30000部分分居然是给暴力的,我分段写的个乱搞40分结果暴力都60分,差评正解:首先可知一个圆被奇数个圆套则答案减去其面积,被偶数个套则加上其面积,然后我们维护一个垂直于x轴扫描线,从左向右扫,每个圆拆成加入和删除两个事件,由于圆和圆不相交,所以一个圆可以看成一个括号,整个扫描线上是一个括号序列,而且随扫描线当前x增加括号之间相对顺序不变(扫描线都是某些相对顺序不变,然原创 2016-05-12 18:35:32 · 1843 阅读 · 0 评论 -
BZOJ4551 [Tjoi2016&Heoi2016]树
TJOI居然考这么傻逼的题……根JLOI一比真是天壤之别-_-转成dfs序,然后相当于区间以deep为关键字去max,直接线段树维护就好#include#include#include#include#include#include#include#include#include#include#include#include#include#includeus原创 2016-05-12 19:00:58 · 574 阅读 · 0 评论 -
BZOJ4554 [Tjoi2016&Heoi2016]游戏
假如没有硬石头的话就是对于每个能放炸弹的点(x,y)第x行连第y列,然后跑二分图最大匹配,有硬石头的话把一个炸弹横向和纵向能炸到的地方算一行和一列,然后和没有硬石头一样#include#include#include#include#include#include#include#include#include#include#include#include#inclu原创 2016-05-12 19:37:38 · 1185 阅读 · 0 评论 -
BZOJ4552 [Tjoi2016&Heoi2016]排序
BC#76原题……二分答案,把小于等于mid的设成零,大于mid的设成1,然后排序可视为区间赋值和区间求和,可用线段树做当mid大于等于答案的时候,最后p的位置一定是0,当mid小于答案的时候,p的位置一定是1,所以满足可二分性复杂度O(n log^2 n)#include#include#include#include#include#include#include原创 2016-05-13 09:09:50 · 1338 阅读 · 0 评论 -
BZOJ3771 Triple
这真是个悲伤的故事第一次看完题我笑了半天23333还有就是要认真读题,题里说河神会拿一个,两个,或三个斧子,这并不是什么象征意义,而是确实只是会拿一个,两个或者三个……这样的话我们把生成函数A搞出来发现不能A+A^2+A^3直接搞,因为有拿重的我们设B为把斧子的价值都乘2的生成函数,C为都乘3的生成函数(也就是一起拿两把和三把)手动容斥一下,答案为A+(A^2-B)/2+(原创 2016-05-26 20:07:46 · 1332 阅读 · 0 评论 -
BZOJ3879 SvT
Orz PoPoQQQ 大爷造个后缀树,跑虚树,很裸的题模数过大需要快速乘,每次被乘数*2,乘数如果这位是1则把答案加上当前被乘数不过discuss说不模也行?#include#include#include#include#include#include#include#include#include#include#include#include#inc原创 2016-05-26 22:03:31 · 862 阅读 · 0 评论 -
BZOJ3551 [ONTAK2010]Peaks加强版
对于在图上限制最大边权的题,我们可以建一颗最小生成树,合并两个连通块的时候新建一个节点代表这条边,点权为边权,把两个连通块的子树都作为这个新点的儿子,然后用这个新点代表这个连通块然后点x通过边权不大于y的边能到达的点就是点x在新树上点权小于等于y的最高祖先所代表的子树,这个可以倍增查询于是就变成了查询子树K大,主席树即可#include#include#include#inclu原创 2016-05-14 14:43:39 · 506 阅读 · 0 评论 -
BZOJ4129 Haruna’s Breakfast
带修改树上莫队加分块-_-带修改莫队:把修改和查询分别存起来,查询按x所在块为第一关键字,y所在块为第二关键字,时间为第三关键字排序,修改按时间排序,然后再扫查询的时候每次走完x和y再走时间,该更改的更改,该回滚的回滚,块的大小取n^(2/3),复杂度为n^(5/3)树上分块:维护一个栈,维护子树内没有块的点,深搜,回溯的时候压栈,当栈里元素大于块下界的时候分一块树上莫队:刚开始使得L原创 2016-05-27 20:58:30 · 1275 阅读 · 5 评论 -
BZOJ3052 [wc2013]糖果公园
带修改树上莫队裸题挺好写的嘛-_-带修改树上莫队可以看这里#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 10001原创 2016-05-29 12:16:36 · 748 阅读 · 0 评论 -
BZOJ4597 [Shoi2016]随机序列
发现对于除了全是乘法之外的任意一个序列,有一个与之一一对应的序列,两个序列相加后除了第一项全部抵消,所以只有前缀积被记入答案,第n个元素的前缀积被计算了一次,对于1更改一个数相当于对他和他后面的所有前缀积乘上这个数的逆元再乘上新数线段树维护即可#include#include#include#include#include#include#include#include原创 2016-05-18 16:04:22 · 737 阅读 · 0 评论 -
BZOJ4050 [Cerc2014] Wheels
模拟即可#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 1010#define MAXM 1010#define ll原创 2016-05-18 16:44:01 · 514 阅读 · 0 评论 -
BZOJ4436 [Cerc2015]Kernel Knights
一个点x如果不被任意S中的骑士挑战那么他一定在S中,如果S中存在一个骑士挑战了他那么他一定不在S中所以找所有入度为0的点x,加入S,并把x连的所有点y的所有连出的点yy的入度减一,直到剩下的全是环,因为是二分图所以没有奇环,环上的点任意隔一个加到S里即可#include#include#include#include#include#include#include#inclu原创 2016-05-18 16:59:17 · 1320 阅读 · 0 评论 -
BZOJ1018 [SHOI2008]堵塞的交通traffic
线段树分治裸题把每条边存在的区间建到线段树上,然后深搜线段树,按秩合并并查集维护连通块,回溯的时候回滚操作#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace s原创 2016-05-18 18:24:10 · 1184 阅读 · 0 评论 -
BZOJ4590 [Shoi2015]自动刷题机
#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 100010#define MAXM 1010#define ll long原创 2016-05-18 15:22:14 · 878 阅读 · 1 评论 -
BZOJ4602 [Sdoi2016]齿轮
DFS,记录每个点转速,判断是否矛盾即可#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 1010#define MAXM原创 2016-05-20 16:16:48 · 1383 阅读 · 0 评论