自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

neither_nor

alone_wolf

  • 博客(30)
  • 收藏
  • 关注

原创 BZOJ3779 重组病毒

诶,卡常数差评用LCT维护链上颜色段数和x的子树内所有的点到x的颜色段数之和,时限题里的操作,查询的时候把这跟到x的链信息和x的子树信息合并起来就可以出解了因为就是一个普通的LCT,所以复杂度是n log n 的这里就说一下每个变量是什么,具体怎么维护就看代码把LCT上有虚边和实边,实边就是儿子认爹、爹也认儿子,虚边就是儿子认爹爹不认儿子实子树即x在splay上的子树(包括比x

2016-05-29 13:47:49 1076 3

原创 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 765

原创 BZOJ4129 Haruna’s Breakfast

带修改树上莫队加分块-_-带修改莫队:把修改和查询分别存起来,查询按x所在块为第一关键字,y所在块为第二关键字,时间为第三关键字排序,修改按时间排序,然后再扫查询的时候每次走完x和y再走时间,该更改的更改,该回滚的回滚,块的大小取n^(2/3),复杂度为n^(5/3)树上分块:维护一个栈,维护子树内没有块的点,深搜,回溯的时候压栈,当栈里元素大于块下界的时候分一块树上莫队:刚开始使得L

2016-05-27 20:58:30 1319 5

原创 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 920

原创 BZOJ3771 Triple

这真是个悲伤的故事第一次看完题我笑了半天23333还有就是要认真读题,题里说河神会拿一个,两个,或三个斧子,这并不是什么象征意义,而是确实只是会拿一个,两个或者三个……这样的话我们把生成函数A搞出来发现不能A+A^2+A^3直接搞,因为有拿重的我们设B为把斧子的价值都乘2的生成函数,C为都乘3的生成函数(也就是一起拿两把和三把)手动容斥一下,答案为A+(A^2-B)/2+(

2016-05-26 20:07:46 1359

原创 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 854

原创 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 1516 2

原创 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 716

原创 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 1393

原创 BZOJ4530 [Bjoi2014]大融合

LCT维护子树大小即可对于每个点维护siz代表splay上的子树大小,SIZ代表不在splay上的子树大小,Siz代表连在这个点上的虚子树的大小的和旋转、access和link的时候更新这三个值即可#include#include#include#include#include#include#include#include#include#include#incl

2016-05-19 13:38:27 2975

原创 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 1195

原创 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 1358

原创 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 533

原创 BZOJ4597 [Shoi2016]随机序列

发现对于除了全是乘法之外的任意一个序列,有一个与之一一对应的序列,两个序列相加后除了第一项全部抵消,所以只有前缀积被记入答案,第n个元素的前缀积被计算了一次,对于1更改一个数相当于对他和他后面的所有前缀积乘上这个数的逆元再乘上新数线段树维护即可#include#include#include#include#include#include#include#include

2016-05-18 16:04:22 761

原创 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 916 1

原创 BZOJ1833 [ZJOI2010]count 数字计数

数位DP模板题然而我并不会-_-orz了一发hzwer学长的代码,终于学会了数位DP设f[i][j]表示i位,开头为j的方案数(算前导零)先预处理f数组求a以内的答案时,先加上所有位数不足a的位数的,然后从高位到低位枚举当前位是几,计入答案,然后定下这一位,枚举下一位基本把黄学长的代码抄了一遍-_-复杂度O(位数*10*更新复杂度)#include#include#

2016-05-18 08:01:57 902

原创 BZOJ4553 [Tjoi2016&Heoi2016]序列

设一个数的原值为v[i],最小能变化的值为l[i],最大值为r[i],观察一下可发现,i可放在j后面当且仅当r[j]然而我写了一发树套树T了,今天模拟,考了一道题,也是dp最长某某某条件子序列转化为矩形最大值和加点,我又怒写一发树套树,结果又T了,xuruifan怒写KDT,T了,commonc怒写CDQ分治,过掉了-_-然后当个双倍经验,我就写了这个CDQ分治复杂度O(n log^2

2016-05-16 21:12:27 1193 5

原创 BZOJ3551 [ONTAK2010]Peaks加强版

对于在图上限制最大边权的题,我们可以建一颗最小生成树,合并两个连通块的时候新建一个节点代表这条边,点权为边权,把两个连通块的子树都作为这个新点的儿子,然后用这个新点代表这个连通块然后点x通过边权不大于y的边能到达的点就是点x在新树上点权小于等于y的最高祖先所代表的子树,这个可以倍增查询于是就变成了查询子树K大,主席树即可#include#include#include#inclu

2016-05-14 14:43:39 519

原创 BZOJ3545 [ONTAK2010]Peaks

考虑离线,按权值限制从小到大计算答案,对每个点维护一颗权值线段树,每次计算答案之前将边权小于等于限制的边两端的连通块的权值线段树合并,然后在权值线段树上查询即可#include#include#include#include#include#include#include#include#include#include#include#include#include#

2016-05-13 16:24:22 511

原创 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 1358

原创 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 1216

原创 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 605

原创 BZOJ4561 [JLoi2016]圆的异或并

这题现场的时候n=30000部分分居然是给暴力的,我分段写的个乱搞40分结果暴力都60分,差评正解:首先可知一个圆被奇数个圆套则答案减去其面积,被偶数个套则加上其面积,然后我们维护一个垂直于x轴扫描线,从左向右扫,每个圆拆成加入和删除两个事件,由于圆和圆不相交,所以一个圆可以看成一个括号,整个扫描线上是一个括号序列,而且随扫描线当前x增加括号之间相对顺序不变(扫描线都是某些相对顺序不变,然

2016-05-12 18:35:32 1858

原创 BZOJ3702 二叉树

对于每一个节点,保证这个子树代表的区间里逆序对数最少,即能保证答案最小,因为两颗互不包含的子树内部的顺序与一颗子树对另一颗子树的贡献无关对每个叶子节点建一个权值线段树,对每个非叶子节点合并他的两个儿子节点的线段树,合并的时候通过siz[son[x][0]]*siz[son[y][1]]和siz[son[x][1]]*siz[son[x][0]]算出左儿子在前和右儿子在前时候的子树内逆序对数,用

2016-05-12 16:26:56 555

原创 BZOJ4571 [Scoi2016]美味

区间最大异或值的经典做法是可持久化trie,但是加上一个数的话可持久化trie就变得非常的扯淡考虑可持久化trie其实可以等价为一颗上限为2^k-1的主席树,在trie上确定一位其实相当于将答案的区间缩小的一半,也就是在主席树上向下走一层当所有数加上x之后,我们在主席树上走的时候就不能直接调用siz[son[x][0]],但是因为所有数都被加了,所以我们其实要查询的是左子树的区间向前窜x位

2016-05-11 20:56:12 1916

原创 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 1257

原创 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 1379 1

原创 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 2229

原创 bzoj4567 [Scoi2016]背单词

这题的题意真是难于理解意思就是挨个放单词,放每个单词之前一定把这个单词的后缀都先放上去,每个单词的代价等于这个单词的位置减去上一个出现的这个单词的后缀的位置第一个条件是没用的,因为如果触发这个条件一定不是最优的然后嘛,我们把串反一下,建一颗trie,把除了根意外不是作为串的结尾的没用的点去掉,这样就变成了一颗树,问题转化为给树上每个点标号,每个点的标号大于其父亲的编号,每个点代价为他的

2016-05-10 13:42:24 2637

原创 BZOJ4568 [Scoi2016]幸运数字

树上查两点间最大异或和树倍增,每个点维护向上2^k个点的线性基,然后在查lca的时候合并关于点权维护倍增略蛋疼-_-合并线性基的时候就直接把一个线性基里的插到另一个里复杂度O(m log n log^2INF)合并的时候加点优化可以降掉一个logINF接下来bb一些有关线性基和最大异或和的东西……首先线性基是一个拟阵,遗传性显然,交换性可以把大的里边找一个小的里没有的位

2016-05-10 11:04:18 2789 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除