forezxl的博客

ZJ蒟蒻OIer

BZOJ1566: [NOI2009]管道取珠(洛谷P1758)

DP BZOJ题目传送门 洛谷题目传送门 神奇的DP题。 考虑∑a2i∑ai2\sum a_i^2的组合意义,可以发现其实是做两遍这个游戏,产生的两个序列相同的方案数。 那么我们就把两次放在一起来做,f[i][j][k][t]f[i][j][k][t]f[i][j][k][t]表示第一次...

2018-03-29 20:58:40

阅读数:53

评论数:0

BZOJ2434: [NOI2011]阿狸的打字机(洛谷P2414)

AC自动机 树状数组 BZOJ题目传送门 洛谷题目传送门 可以发现整个操作过程就是建立一颗Trie树。而查询第x个打印的字符串在第y个打印的字符串中出现的次数其实就是查询有多少个y的节点的fail指针指向在x的结束节点。 我们把fail树建起来,把y都打上1,就会发现询问变成在x结束节点所...

2018-03-29 17:58:02

阅读数:48

评论数:0

BZOJ1858: [Scoi2010]序列操作(洛谷P2572)

线段树 BZOJ题目传送门 洛谷题目传送门 就是这道题的两种颜色版+普通线段树。 对于每个区间维护一些东西: sm[0/1]sm[0/1]sm[0/1]表示这个区间0/10/10/1的数量,mx[0/1]mx[0/1]mx[0/1]表示这个区间连续的0/10/10/1的最长长度,lx[0...

2018-03-25 19:39:13

阅读数:67

评论数:0

BZOJ2816: [ZJOI2012]网络(洛谷P2173)

LCT BZOJ题目传送门 洛谷题目传送门 这。。。就是裸题啊 既然c≤10c≤10c\leq10,那么我们建ccc颗LCT就好了。 对于刚开始的边,按照边的颜色把两个节点link起来就好了。 对于操作0:直接改就好了。。。 对于操作1:找到这条边在哪个LCT上,然后分情况讨论就好了...

2018-03-22 20:04:46

阅读数:54

评论数:0

BZOJ1058: [ZJOI2007]报表统计(洛谷P1110)

STL BZOJ题目传送门 洛谷题目传送门 学了一发set。 用两个set,一个维护全局的差值,一个维护每个位置的差值。 对每个位置记录起始元素和最终元素,就可以用set维护了。 map用来判断元素是否存在,堆快速得出答案。 代码: #include<map&...

2018-03-16 20:36:46

阅读数:92

评论数:0

BZOJ4066 简单题

KD-Tree 题目传送门 简单的KD-Tree+重构的应用。 查询的话和线段树一样查询。记sum表示子树和,如果当前区域完全被所求区域包含就直接返回sum,否则递归子树。 当插入超过一定次数时就重构(其实直接build就好了),注意把信息清零。 代码: #include&...

2018-03-15 19:37:31

阅读数:96

评论数:0

BZOJ2733: [HNOI2012]永无乡(洛谷P3224)

平衡树 BZOJ题目传送门 洛谷题目传送门 平衡树启合裸题。 刚开始把所有节点当成一棵树,每次把小的树合并到大的上,时间复杂度为O(nlog2n)O(nlog2⁡n)O(n\log^2n)。 判断是否连通的话用并查集就好了。 代码: #include<c...

2018-03-14 15:42:20

阅读数:69

评论数:0

BZOJ4567: [Scoi2016]背单词(洛谷P3294)

Trie树 贪心 BZOJ题目传送门 洛谷题目传送门 题目半天没看懂。。。 翻译一下三种情况: 1:当s有任意后缀单词没有在表里,学习s的代价为len(s)2len(s)2len(s)^2 2:当s没有后缀单词时,学习s的代价为len(s)len(s)len(s) 3:当s的所有后缀...

2018-03-13 19:27:52

阅读数:169

评论数:0

BZOJ3669: [Noi2014]魔法森林(洛谷P2387)

LCT 最小生成树 BZOJ题目传送门 洛谷题目传送门 先对边按照a排个序,就像cdq分治那样除去其中一维的影响,而b用LCT动态维护最大值。 当边的两端不连通时直接加边,否则找到两端路径上b的最大值,与当前边比较考虑是否加入并删除原来的边。 但是LCT搞不了边权,可以把一条边变成一个点...

2018-03-12 14:47:06

阅读数:136

评论数:0

BZOJ2435: [Noi2011]道路修建(洛谷P2052)

DFS BZOJ题目传送门 洛谷题目传送门 题目没读懂想了半天。。。 超级大水题 对每个节点记录一个size,然后枚举每一条边,答案就是边权×(size[1]−2∗size[v])×(size[1]−2∗size[v])\times(size[1]-2*size[v]) size的话。...

2018-03-11 21:17:13

阅读数:76

评论数:0

BZOJ1316: 树上的询问

点分治 题目传送门 就是这道题,本想着双倍经验的,然而BZOJ被卡了。。。就换抄了另一种方法。 本来我在统计的时候是平方枚举然后加入桶里的,然后O(1)O(1)O(1)回答。这种方法是先离线,再把深度排一遍序,然后二分判断另一个是否存在。把平方变成了一个logloglog。 代码: ...

2018-03-11 20:15:35

阅读数:100

评论数:0

BZOJ2648: SJY摆棋子(BZOJ2716)

KD-Tree BZOJ2648 BZOJ2716 先根据开始给你的黑棋子构造好二维KD-Tree,黑棋子插入,白棋子看成询问不插入 其实就是板子题 代码: #include<cctype> #include<cstdi...

2018-03-10 19:45:17

阅读数:78

评论数:0

BZOJ4530: [Bjoi2014]大融合(洛谷P4219)

LCT BZOJ题目传送门 洛谷题目传送门 显然答案为sz[x]∗sz[y]sz[x]∗sz[y]sz[x]*sz[y],但是因为这棵树会“动”,不能每次求一遍答案。 设sz[x][0/1]sz[x][0/1]sz[x][0/1]表示x中虚边连接的/总的节点个数。那么有sz[x][1]=s...

2018-03-09 19:09:25

阅读数:109

评论数:0

BZOJ5084: hashit

后缀自动机 题目传送门 询问答案的话直接算就好了。 撤销的话记录一个指针数组aaa指向每次插入后改变的节点,另开一个bbb存修改前的值。当撤销的时候只需要∗a[i]=b[i]∗a[i]=b[i]^*a[i]=b[i]即可。 其实就是暴力(但是跑得比正解快)。 代码: #include&...

2018-03-09 16:16:17

阅读数:113

评论数:0

后缀自动机的简单应用(hihocoder 1445&&1449)

其实是练板 hihocoder 1445 题目传送门 求一个串中不同的子串个数,等价于求∑l[i]−minlen[i]+1∑l[i]−minlen[i]+1\sum l[i]-minlen[i]+1 等价于求∑l[i]−(l[nxt[i]]+1)+1=∑l[i]−l[nxt[i]]∑l[i...

2018-03-08 20:45:14

阅读数:164

评论数:1

BZOJ2946: [Poi2000]公共串

后缀数组 二分 题目传送门 和HDU4080一个套路。 先把这几个串接起来,串和串之间用一个符号隔开。二分答案l,当连续一段h[i]的长度都≥l,且sa[i]分布在所有串中就满足。 代码: #include<cstdio> #include&a...

2018-03-08 20:11:24

阅读数:60

评论数:0

BZOJ4817 [Sdoi2017]树点涂色(洛谷P3703)

LCT 线段树 BZOJ题目传送门 洛谷题目传送门 码力不行啊 操作1就是access啦 操作2就是w[x]+w[y]−2∗w[lca(x,y)]+1w[x]+w[y]−2∗w[lca(x,y)]+1w[x]+w[y]-2*w[lca(x,y)]+1啦 操作3就是先DFS序然后线段树查...

2018-03-07 21:13:34

阅读数:109

评论数:0

后缀自动机简介(洛谷P3804)

后缀自动机简介 学习自这里 这里只是为了背板而写的简介 定义 对给定字符串s的后缀自动机是一个最小化确定有限状态自动机,它能够接收字符串s的所有后缀。 通俗点说,后缀自动机就是一种自动机废话 ,它能够识别字符串s的所有后缀(当然不只识别得到后缀),并且能实行快速跳转(比如AC...

2018-03-07 15:12:18

阅读数:105

评论数:0

BZOJ3670: [Noi2014]动物园(洛谷P2375)

KMP BZOJ题目传送门 洛谷题目传送门 感觉洛谷标签高了点啊。。。 第一遍处理出next数组,另记一个数组干脆就叫 num表示题目中的num的可重叠版(就是前后缀可重叠的数量)。再类似求next一样跳一遍,加上限制后统计答案就好了。 我之前从0开始的KMP简直有毒 代码: #in...

2018-03-05 21:03:26

阅读数:113

评论数:0

HDU4080 Stammering Aliens

后缀数组 二分 题目传送门 题目大意:给你一个数m和一个字符串s,求长度最大的子串ss满足它在s中的出现次数≥≥\geqm。输出ss的长度及最后出现的位置。 首先二分答案,设长度为x,预处理出h数组后,统计连续一段h[i]≥h[i]≥h[i]\gex的i的个数。如果个数≥≥\gem就满足了,...

2018-03-05 17:55:42

阅读数:78

评论数:0

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