自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Chester King

蒟蒻成长中……

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

原创 【BZOJ】4504 K个串 主席树+堆

题目传送门 一个晚上就做了这么一道题……好颓啊…… 首先我们可以对于每个aia_i维护一个pre[ai]pre[a_i]表示在它之前与他最近的相同的数的位置。 然后对于每个aia_i,在(pre[ai],i)(pre[a_i],i)这个范围内都加上aia_i,可以用主席树。 题目要求kk个区间不相同,这就是“超级钢琴”的模型,套上超级钢琴的套路就行了。 附上AC代码: #inclu

2018-01-16 21:21:22 253

原创 【BZOJ】3993 [SDOI2015]星际战争 二分+网络流

题目传送门 网络流的用法又涨姿势了——网络流可以用于判断答案的可行性。 这题我们首先考虑建图: 第ii个机器人向超级汇点连一条流量为aia_i的边。 超级源点向第ii个武器连一条流量为??的边。(??表示流量暂时未定) 如果第ii个武器可以打到第jj个机器人,就连一条流量为+∞+\infty的边。 然后考虑二分一个时间midmid作为答案,这时考虑第2条建图,这时的??就等于bi×mi

2018-01-15 21:08:45 242

原创 【HDU】4787 GRE Words Revenge 二进制分组+AC自动机

题目传送门 orz Manchery 多次询问可以按时间分治,但可惜这题强制在线。 因而引入了二进制分组,就是把当前字符串的数量二进制拆分。 比如说当前有10个字符串,就把这10个字符串分成一组8个和一组2个。 这样每个字符串最多被重构AC自动机log2n\log_2n,一种优美的暴力 二进制分组适用于那些不支持修改的数据结构,AC自动机算一例,凸包也是。 附上AC代码: #i

2018-01-15 21:08:09 436

原创 【BZOJ】2124 等差子序列 线段树+hash

题目传送门 等等……这题好像在哪里做过…… 哦,Codeforces 452F,原题哈…… 为什么我还是不会做啊…… 就当是复习一遍吧,这种想法还是挺好的。 p.s.WA了两发,错在了updata上……好像updata这个地方好容易出错啊。 附上AC代码: #include #include #include using namespace std; typedef un

2018-01-12 21:15:31 207

原创 【51nod】1486 大大走格子 DP+组合数学

题目传送门 很久以前就考过的题目了……但是为什么我一直都不会…… 考虑两个障碍物之间的转移,方案数就是Cx2−x1x2−x1+y2−y1C^{x2-x1}_{x2-x1+y2-y1}。 把起点和终点加到障碍物里一起转移,先按坐标升序排序。 然后定义f[i]f[i]表示前ii个障碍物只经过第ii个的方案数,f[i]=Cxi−1xi+yi−2+∑jij=1f[j]×Cxi−xjxi−xj+yi

2018-01-12 21:14:22 260

原创 【51nod】1407 与与与与 DP+容斥

题目传送门 好难懂的一道题啊……%%%sillyf 先把题目转化一下,答案就等于所有组合-and值不为零的组合。 定义f[x]f[x]为ai&x==xa_i\&x==x的aia_i的个数,g[x]g[x]为xx转化为二进制后1的个数。f[x]f[x]的求解方法见上一篇blog。 容斥一下求and不为零的组合情况: ans=∑x=11000000(−1)g[x]−1×(2f[x]−1) a

2018-01-12 20:55:17 405

原创 【51nod】1406 与查询 DP

题目传送门 考虑一个数num&x==xnum\&x==x,说明xx在二进制下为1的位置上numnum也为1。 定义f[x]f[x]为ai&x==xa_i\&x==x的aia_i的个数。 如果y&x==xy\&x==x,即yy是xx的一个子集,那么f[y]f[y]一定对f[x]f[x]产生贡献。 这样就可以枚举子集转移了,但是可能会有重复计算,于是从高位向低位转移。 p.s.输入输出数据量

2018-01-12 20:54:45 237

原创 【BZOJ】3506 [Cerc2007]robotic sort Splay

题目传送门 这好像是两天前的题目了……一直都忘记写blog了…… 其实这题就是一道序列翻转+求区间最小值的位置,直接splay维护序列就行了。 p.s.这是一道双倍经验题,不过3506那题的题目描述极为险恶……(见oj1552)…… 附上AC代码: #include #include #include using namespace std; const int N=1e5+10

2018-01-11 11:55:26 174

原创 【BZOJ】3669 [Noi2014]魔法森林 kruskal+LCT

题目传送门 一句话题意:求一条路径,使得max(ai)+max(bi)max(a_i)+max(b_i)最小。输出这个最小值。 还是ZZK最强了,一眼就秒掉了这道题。 首先我们把所有的边按aia_i排序,从前往后加入边,显然当前的边是最大的aia_i,我们只需要用LCT维护一个从1到n路径上的max(bi)max(b_i)就行了。 不过LCT好像没法处理边权,那么我们可以换一种建LCT的方

2018-01-09 18:58:01 207

原创 【BZOJ】2843 极地旅行社 LCT

题目传送门 这题啊,又是一道LCT的裸题,大致上和洛谷的模板差不多吧,直接切掉就好了。 附上AC代码: #include #include #include using namespace std; const int N=2e5+10; int n,a[N],m,ch[N][2],f[N],mk[N],sz[N],o,x,y; inline char nc(void){

2018-01-08 20:51:42 207

原创 【BZOJ】2002 [Hnoi2010]Bounce 弹飞绵羊 LCT

题目传送门 这题的想法挺好的。至少我想不到。 考虑每个点向它弹到的点连边,如果在当前点被弹飞,就和n+1n+1号点连边。 然后发现这样的建图形成了一棵树,修改操作可以看成删边+加边。 一个节点的答案就是该节点到n+1n+1号节点的路径长度-1。 附上AC代码: #include #include #include using namespace std; const int N

2018-01-07 20:21:04 283

原创 【洛谷】3690 【模板】Link Cut Tree (动态树)

题目传送门 一道迟到的模板题。话说在思路清晰的时候敲代码真的爽啊。 修改操作可以先访问该节点,然后把它旋转到根,这样只用修改这一个点的权值就好了。 询问操作可以把其中一个节点搞成根,然后两点间的权值就变成了另一个节点到根的权值了。 这两个想法挺妙。 附上AC代码: #include #include #include using namespace std; const i

2018-01-07 20:20:43 248

原创 【BZOJ】2049 [Sdoi2008]Cave 洞穴勘测 LCT

题目传送门 好吧,有些时候不能盲目地相信板子——LCT的splay和普通的splay有区别的…… 我就是因为直接copy板子而一直TLE,还不知道哪里错…… 直接给出ZZK的blog,还是ZZK最强啦!!! 总之LCT的最核心的操作就是access,把一棵树分成很多实链,每条实链对应一棵splay,然后处理两个点之间的关系(连接与断开)就变成了splay的操作。 至于时间复杂度,好像也是

2018-01-07 15:49:48 197

原创 【BZOJ】1007 [HNOI2008]水平可见直线 半平面交(单调栈)

题目传送门 半平面交这个名字好可怕啊……但是其实就是一个单调栈。 我们把所有的一次函数按斜率降序排序,设ii为当前函数的编号,sk[]sk[]为单调栈,toptop为栈顶指针。定义calc(x,y)calc(x,y)函数为计算两个一次函数的交点的横坐标。 如果calc(i,sk[top])>=calc(sk[top],sk[top−1])calc(i,sk[top])>=calc(sk[to

2018-01-05 19:51:37 254

原创 【BZOJ】3196 Tyvj 1730 二逼平衡树 线段树+平衡树

题目传送门这题除了烦一点,其实也没什么大不了的嘛……就是外层一棵区间线段树,内层套上splay,除了第二个操作需要套一个二分,时间复杂度为O(log32n)O(\log_2^3n),其他的操作的时间复杂度都是O(log22n)O(\log_2^2n)。主要是细心吧,耐心一点写都能过的吧。p.s.话说内存不够导致TLE什么的好鬼啊……还是ZZK大佬最强了,一眼就看出了问题。附上AC代码:#includ

2018-01-03 20:44:18 300

原创 【BZOJ】3932 [CQOI2015]任务查询系统 主席树+差分

题目传送门这题嘛,就是主席树吧,把一个任务拆成两部分:任务开始的加入操作和任务结束的删除操作。(好像这就是差分了吧)然后如果两个操作在同一个时间点上发生,就直接对当前时间节点的树根进行修改;否则就在两个操作时间点之间的时间点上覆盖为前一个操作时间点的主席树根。(话说一开始我还不知道为什么要有这个覆盖的……智商已下线)然后就是一些普通的主席树操作了吧,直接写掉就行了。附上AC代码:#include <

2018-01-03 20:43:38 253

原创 【Codeforces】600E Lomsat gelral (dsu on tree)

题目传送门优美的暴力什么的太暴力了吧……首先我们证明一下dsu on tree的复杂度,我们挑出一个节点的重儿子,就是树剖里的重儿子,把所有的轻儿子的信息加入到重儿子里,每次的树的大小至少翻倍,所以时间复杂度为O(nlog2n)O(n\log_2n)。dsu on tree也有一定的局限性:1.只能支持子树查询;2.不支持修改修改。个人感觉dsu on tree就是处理树上的轻重儿子关系吧,就是在轻

2018-01-02 21:13:59 295

空空如也

空空如也

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

TA关注的人

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