自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Oxer的专栏

新博客 -> https://oxer11.github.io/

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

原创 【bzoj2743】[HEOI2012]采花 树状数组 bzoj400AC纪念

又被太神鄙视了……虽然题数比较少,但还是纪念一下吧。同一类问题,计算一个nxt[i]表示i后面出现的第一个位置,离线做,按照右端点排序,扫描到i,把nxt[nxt[i]]减1,nxt[i]加1。#include#include#include#include#include#include#define maxn 1000010 using namespace

2016-01-18 15:24:38 783 1

原创 【bzoj3940】[Usaco2015 Feb]Censoring AC自动机

同3942,把KMP换成AC自动机。开一个栈,记录一下每个位置匹配到哪个节点,如果是单词节点,那么弹出对应长度的字符串。#include#include#include#include#include#include#define maxn 110010 using namespace std; int ch[maxn][26],fail[maxn],q[ma

2016-01-18 15:11:23 998

原创 【bzoj2216】[Poi2011]Lightning Conductor 决策单调性+整体二分

其实看到这道题是毫无思路的。先简化思路,对于每个i,求max{aj+sqrt(|i-j|)}-ai把这个式子分成前后两部分,即max(max{aj+sqrt(i-j)},max{ak+sqrt(k-i)})-ai  (j然后,我们发现其实这个式子是有单调性的,所以可以用那种二分优化单调性dp的方式做。整体二分是这种单调性dp的一种写法。void solve1(int l

2016-01-18 15:06:21 1326 1

原创 【bzoj3585】mex 分块+莫队算法

因为在线不太可搞,所以考虑离线。首先,按照莫队的方式对操作排序,对权值分块,维护一下每个块出现的个数。每次询问,找到第一个没有铺满的块,在下一个块内暴力找即可。#include#include#include#include#include#include#define maxn 200010 using namespace std; struct yt

2016-01-18 14:56:21 694

原创 【bzoj4127】Abs 线段树+树链剖分

比较不错的题,因为每次都是加一个正数,所以每个数只会由负变正一次。每次变成正数的时候,暴力修改就可以了。维护一下区间最大的负数和负数的个数,如果这次没有负数变成正数,那么直接修改,否则暴力修改。#include#include#include#include#include#include#define maxn 100010 #define inf 100000

2016-01-18 14:52:08 446

原创 【bzoj2096】[Poi2010]Pilots 单调队列

见识了,原本以为用一个队列搞就可以了。维护两个单调队列,一个单调递增,一个单调递减。枚举右端点,那么区间的左端点一定是单调不减的,所以如果最大值-最小值>K,那么就弹出两个队头中靠前的那一个。#include#include#include#include#include#include#define maxn 3000100 using namespace s

2016-01-11 13:46:46 897

原创 【bzoj4059】[Cerc2012]Non-boring sequences 分治

好吧,这道题的复杂度真是蛮神奇的。http://whx991201.is-programmer.com/posts/190036.html搞了好久才发现暴力的复杂度是对的。首先处理出pre[i],nxt[i],很明显只要i这个位置的数如果pre[i]R那么这个数在区间[L,R]上只出现了一次。考虑如果要检验区间[l,r],那么只需要找到一个在[l,r]上只出现了一次的数,然后把

2016-01-08 10:03:04 835

原创 【bzoj4094】[Usaco2013 Dec]Optimal Milking 线段树

好吧,承认我脑子有洞,竟然往dp上想。线段树暴力维护一下四个量只选左端点,只选右端点,两个都不选,两个都选#include#include#include#include#include#include#define maxn 40010 using namespace std;struct yts{ int l,r; long long lx,rx,

2016-01-07 15:03:52 703

原创 【bzoj3165】[Heoi2013]Segment 神奇的线段树

好神奇的线段树呀,第一次接触这种题。http://www.cnblogs.com/idy002/p/4315959.html对x坐标建一棵线段树,每个节点记录一下覆盖这个区间的是哪条线段。插入一条线段,如果线段没有覆盖当前的区间,那么递归它的儿子。如果线段覆盖了当前的区间,如果当前区间没有被线段覆盖,那么就直接更新。如果当前区间被线段覆盖了,如果两个线段没有交点,那

2016-01-07 13:37:22 2005

原创 【bzoj3747】[POI2015]Kinoman 线段树

经典做法,处理出next[i]表示下一个相同的地方。注意是算出现且仅出现一次的地方。每次加一个颜色就是[i,next[i]-1]这个区间+价值删除一个颜色就是[i,next[i-1]]这个区间-价值所以用一个线段树维护每个位置的答案,支持区间加和查询就可以了。#include#include#include#include#include#include#d

2016-01-07 08:21:30 554

原创 【bzoj4028】[HEOI2015]公约数数列 分块

好难想呀,看的题解。http://www.cnblogs.com/maijing/p/4765730.html很明显gcd是非严格递减的,那么我们处理出Gcd[i]表示从i所在块的开头到i的gcd,Xor[i]表示从i所在块开头到i的xor假设暴力扫描,如果前面的块所取到的前缀gcd为lastgcd,xor为lastxor若gcd(lastgcd,Gcd[r[i]])==las

2016-01-06 20:06:21 1160

原创 【bzoj4241】历史研究 分块

PoPoQQQ大神的题解:http://blog.csdn.net/popoqqq/article/details/47809173一开始自己想了一种莫队的方法,结果发现复杂度错了,结果在网上找到了在线的做法。分块后,处理出mx[i][j]表示第i块到第j块的答案,cnt[i][j]表示前i块数字j的个数,注意先离散化。然后每次查询,把块外的部分单独处理,块内的部分直接

2016-01-06 13:59:41 1508

原创 【bzoj2453】维护队列 分块

强行分块,明明主席树简单得多。莫队也不错。每个数记录一个pre[i]表示上次出现的位置,那么询问[l,r]中有多少个不同的数等价于[l,r]中有多少个pre[i]主席树做就好了,分块也很简单。#include#include#include#include#include#include#define maxn 10010using namespace st

2016-01-05 20:44:37 858

原创 【bzoj3343】教主的魔法 分块

算是第一次写分块吧。这道题是最裸的分块,每个块上打上加标记,另外维护一个块内的排好序的数组。对于修改操作,如果l,r在一个块内,暴力更改,之后重建。如果l,r不在一个块内,中间的块处理标记,其余部分暴力更改,之后重建。对于询问操作,如果l,r在一个块内,暴力查询如果l,r不在一个块内,中间的块里二分查找,其余部分暴力查询#include#include#

2016-01-05 19:14:52 1108

原创 【bzoj3514】Codechef MARCH14 GERALD07加强版 link cut tree+主席树

也是比较久的一个坑了。首先考虑一下联通块个数=总点数-有贡献的边数,即没有形成环的边数。那么采用一种数据结构题非常经典的做法了,pre[i]表示边i加入后应该弹出哪条边。如果支持离线的话,按l排个序,想bzoj1878一样,每次跳就可以了。强制在线,每次询问[l,r]中pre[i]在[0,l-1]中的边数,这个问题用主席树解决。时限卡得好紧#include#inc

2016-01-05 08:46:25 638

原创 【bzoj2594】[Wc2006]水管局长数据加强版 link cut tree

好久的坑了,今天终于填上了。一直想总结一下LCT,结果发现难题都不会做。离线处理,因为删边比较难做,所以我们倒着做变成加边操作。问题转化成加边维护最小生成树,用lct维护一下最大的边是哪一条,一旦新加入的边形成环了,那么看一看环上最大的边和新加入的边哪个大,如果新加入的边小,那么删除原来的边,加入这一条边。竟然1A,简直不可思议,不过时间慢成狗。#include#in

2016-01-04 21:03:12 973

原创 【bzoj4278】 [ONTAK2015]Tasowanie 后缀数组

怎么开始刷水了?并起来,加个大数,求个后缀数组比较排名就可以了。为什么这个题行末还要有空格呀?明明样例没有的。#include#include#include#include#include#include#define maxn 400010 using namespace std;int a[maxn];int wa[maxn],wb[maxn],wc

2016-01-03 21:09:09 802

原创 【bzoj1398】Vijos1382寻找主人 Necklace 最小表示法

这道题只需要把原串复制一遍,然后拿另一个串去匹配就可以了。但是作死学了下最小表示法。http://wenku.baidu.com/link?url=disErIxplfqlFvdZy2Zy3q7FO0hYvLBqy0rFbLe93vJfNSJM5BIh4Mh3eWq0a2NPJo-09kbvFPMgyVJ07BPyNQGiw8QPCWrtPYi-RyrULDK最小表示法是判断两个字符串

2016-01-03 20:26:01 578

空空如也

空空如也

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

TA关注的人

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