自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

呆头呆脑没有烦恼

鳗鱼饭yyds

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

原创 「NewCoder1C」保护

Problemnnn个点的树,以1为根,给mmm条路径。 每次询问给vvv、kkk,求一个在满足u-v这条路径至少被kkk条前面给出的路径完全包含的条件下距离根最近的那个点uuu。(输出u−vu−vu-v的距离)Solution由于查询路径只会是直上直下的,所以我们把每条路径拆成两段直上直下的。对于一条路径u−vu−vu-v(dep[u]≤dep[v]dep[u]≤dep[v...

2018-09-12 09:08:42 257

原创 [Apio2012] Guard

Solution有一些个位置一定是不能存在忍者的。于是我们把这些位置拿走,给所有的数据重标号。 做法:开一个长度为 nnn 的数组,对于一定是 000 的一段我们全赋为 111 。最终我们把为 111 的扔掉即可。可以用差分///线段树维护。若重标号后, n=kn=kn=k,那么所有草丛都必须有忍者。特判掉。 而若一个区间 AAA 完全包含另一个 BBB ( AAA 是大的 ),那么...

2018-09-10 15:33:33 277

原创 [BZOJ4771] 七彩树

Problemn个节点的有根数,每个节点拥有一个颜色。边权为1。 现在有m个查询,每个问题有两个整数x和d,表示询问x的字数中depthdepthdepth不超过dep[x]+ddep[x]+ddep[x] + d的所有点中出现来多少种本质不同的颜色。Solution每个点的贡献都是111,那么若有颜色相同的点对(i,j)(i,j)(i,j),那么lca(i,j)lca(i,j)lc...

2018-07-23 17:02:32 343

原创 [NOI2018]网上同步赛游记

Day1T1一看这个东西有好多暴力分呀,打一下吧。然后就写了树和链的。和zg大佬聊了一下,他说他只写了离线的,然后我就一直在想这个离线的做法,就连通块呗。但是跟暴力分也差不多,就算了吧。 然后最终只有50pts50pts50pts。 原因是:spfaspfaspfa这个东西,它已经死了。(原话是:你为什么要写一个平方级的算法呢?) 正解是kruskalkruskalkruskal重构...

2018-07-20 20:03:12 517

原创 逆元与组合数

线性逆元打表inv[i]inv[i]inv[i]为模PPP(P需要是质数)意义下iii的逆元,那么有inv[i]=(P−Pi)×inv[Pinv[i]=(P−Pi)×inv[Pinv[i]=(P-\frac{P}{i})×inv[P%i]i]i]%PPP。 写成代码如下。ll inv[N];inv[0] = 1; inv[1] = 1;for(int i = 2; i < N;...

2018-07-15 20:47:47 388

原创 [TJOI2017]不勤劳的图书管理员

Solution1分块+块内树状数组。可以踩掉标算,甚至碾压。#include <cstdio>#include <cstring>#include <cmath>#define rint register int#define N 50010#include <algorithm>typedef long long ll;...

2018-07-13 18:03:20 324

原创 【NOIP2017】day1 t2 时间复杂度

complexityNOIP2017我认为最毒瘤的题。没有之一。码农题,从去年难为我到现在。给出一些tips。①要先读入进来,再判断语法错误!!!②在存循环类型时候,’F’用1表示,’E’用-1表示,这样你可以省不少力气。③程序运行不到的地方,出现语法错误也是会报错的。特别注意变量的问题,都要判断进去。④存n这个量的时候,用一个较大的数(比如1333...

2018-07-12 17:21:45 344

原创 左偏树

左偏树是一种稳定O(logN)的可并堆算法。 为了做到这个复杂度,我们要保证这么两个事情。以小根堆为例。 1、lson(x)与rson(x)均小于等于x。(just like heap) 2、我们定义一个点的dist(x) = dist(rson(x)) + 1。那么性质就是:必有dist(lson(x)) ≥ dist(rson(x))。(不满足的话我们可以swap,这倒不是问题) ...

2018-06-27 21:39:55 319

原创 字符串系列(六)——回文自动机

想不到吧我还在更新哈哈哈哈哈。 今天带来一个2014年发明的算法——回文自动机。 既然写了这篇博客,那我就说得全面一些。回文自动机这个算法也称回文树。 可以类比一些其他的自动机,回文自动机也是有许多节点、许多next、许多fail的。1、节点的那些事每个节点都表示一个回文子串(注意了啊,只表示一个,SAM才是一类),且任意两个节点所表示的串必定不全等。(可以用数归证明...

2018-06-15 17:48:36 392

原创 bzoj2555: SubString 后缀自动机+LCT

2555: SubStringTime Limit: 30 Sec  Memory Limit: 512 MBSubmit: 4189  Solved: 1284[Submit][Status][Discuss]Description懒得写背景了,给你一个字符串init,要求你支持两个操作(1):在当前字符串的后面插入一个字符串(2):询问字符串s在当前字符串中出现了几次?(作为连续子串)你必须在...

2018-06-14 13:14:00 243

原创 [NOIP2017 d2t3] 逛公园

Problem给一张有向图(无重边、自环,如果有的话应该会麻烦许多吧)。求从1~n有多少种走的方案?其中每一种方案中,走的距离均不超过最短路+K。多组测试数据 + 此题数据范围 = NOIP2017卡常神题。Solution提供一种优美的做法——记忆化搜索。 建一个正图、一个反图。跑一次反向最短路(常用技巧)。 f[u][k]表示dis(u, n) ≤ MinDis(u, ...

2018-06-11 22:33:12 237

原创 Luogu P3676 小清新数据结构题

Problem一棵有点权树,每个节点都有一个s表示其子树权值和。支持点权修改,以及查询x为根时,所有节点s的平方和。Solution(一)考虑没有换根,即对于所有查询均有x=1 点修改u的权值,设增量为a。根据树的性质,只有path(1, u)上的点的s会被更改。 考虑这次修改对答案的贡献。 ⇒∑i∈path(1,u)(si+a)2−∑i∈path(1,u)s2i⇒∑i∈pa...

2018-06-11 09:52:12 244

原创 伪Top-Tree——[Bjoi2014]大融合(bzoj4530)

朴素的LCT是不维护虚边以及轻儿子的。但是这道题需要动态维护这么一个子树大小,就可以考虑维护一下虚边。一个节点x,维护两个:虚儿子的子树大小之和,以及整棵子树大小。然后这题就结束了。注意long long。这辈子都不可能写真正的top-tree的。只能写写伪top-tree这样来维持一下生计。#include <cstdio>#include <algorithm>#d...

2018-06-10 23:16:03 280

原创 LuoguP1501 [国家集训队]Tree II

这题细节巨多!!!!!!当同时维护乘法、加法标记时,根据运算先后,要先下放乘法标记。给一个节点×v:本节点、子树和、乘法标记、加法标记均要×v。然而改完之后还是只有5分。56061...

2018-06-07 21:44:19 215

原创 Link-Cut-Tree

What is Link-Cut-Tree?动态树(Link-Cut-Tree),也称LCT,是一种可以维护一个有根树森林改变形态、合并、分离、查询等操作的数据结构。由Robert Tarjan(他可以说是算法大师了,前面的文章中我是提过他的)为首的团队提出。在学习动态树前,要先明白splay的原理。在下面的一段中,会详细介绍splay的rotate与splay两个操作,请大家暂时忘掉有根树森林之...

2018-06-07 14:53:34 339

原创 谈虚树dp——bzoj2286与bzoj3572

Problem1一棵n个节点的有边权树,m次询问,每次问k个点。要求删除边权总和最小,使得这k个点均不与1连通。朴素Treedp考虑一个dp,dp[i]表示i这棵子树中,所有关键点均不与i连通的最小代价。有转移方程:(j是i的直系儿子)(1)j如果是关键点:f[i] = min(f[i], val[edge(i<=>j)])(2)otherwise,f[i] = min(f[i], f...

2018-06-03 22:40:15 628

原创 bzoj2456 mode

此题的“众数”出现次数一定是超过一半的。因此考虑用不同的两个数去互相抵消,最后剩下谁,那它就是答案。代码很短(来自黄学长):#include<cstdio>int n,t,x,tot;int main() {    scanf("%d",&n);    for(int i=1;i<=n;i++) {        scanf("%d",&x); if(...

2018-05-28 13:50:59 245

原创 bzoj4300 绝世好题

4300: 绝世好题Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 2628  Solved: 1437[Submit][Status][Discuss]Description给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。Input输入文件共2行。第一行包括一个整数n。第二...

2018-05-28 11:24:56 197

原创 *【ZJOI2010】基站选址 线段树优化dp难题

个人觉得这道题很难.......最近我要总结几篇“dp系列”了。令dp[i][j]表示,在第i个位置建造第j个基站时的最小代价。为了方便,我们令n = n + 1,K = K + 1。给最后一个点的c赋0,d和w都赋inf(0x3f3f3f3f,如果用0x7fffffff会爆int),这样的好处是最后一个站一定建造(否则inf就变成答案了,这数字也太大了),且计算进去了前n个的全部的代价。(可以脑...

2018-05-26 21:24:25 284

原创 [Noi2015]程序自动分析

4195: [Noi2015]程序自动分析Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2854  Solved: 1326[Submit][Status][Discuss]Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定...

2018-05-26 11:16:44 306

原创 【NOI2011】阿狸的打字机——AC自动机

除做过一道dfs序维护fail树之外,做这道题还需要想到——将询问离线,用邻接表储存,即每次把所有y相同的处理。From Hzwer:每次查询(x,y),即为查询自动机上path(root->y)的所有结点中,有多少个在x的子树中。树状数组维护区间和。反正这正解我是给跪了。#include <cstdio>#include <cstring>#include &l...

2018-05-25 20:38:19 254

原创 【Hdu4117】GRE Words——AC自动机+dfs序+带区间add线段树维护最大值+dp

GRE WordsTime Limit: 30000/15000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5470    Accepted Submission(s): 680Problem DescriptionRecently George is preparing fo...

2018-05-25 19:24:42 351

原创 树上分块 bzoj1086

对树dfs,每次dfs完儿子,如果不小于块大小的下限,那么就独立成块。用栈维护。#include <cstdio>#define N 1010struct edge {int to, next;}e[N<<1];int n, B, head[N], cnt = 1, vis[N];inline void ins(int x, int y) {e[++cnt].to ...

2018-05-24 21:12:51 264

原创 【NOI2010】 超级钢琴 前缀和+主席树+堆

2006: [NOI2010]超级钢琴Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 3805  Solved: 1896[Submit][Status][Discuss]Description小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐。 这架超级钢琴可以弹奏出n个音符,编号为1至n。...

2018-05-24 13:38:54 288

原创 [Noi2015]软件包管理器 树链剖分

4196: [Noi2015]软件包管理器Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2411  Solved: 1397[Submit][Status][Discuss]Description Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,...

2018-05-24 10:09:57 179

原创 【bzoj1878】统计区间不同种类数

在线做法(只面对kind_num ≤ 60):使用线段树维护,把种类压成一个二进制,每次pushup取或就可以了。离线做法:见代码或他人题解!不会说!#include <cstdio>#include <algorithm>using namespace std;inline char gc() { static char now[1<<16], *S,...

2018-05-23 20:26:49 570

原创 洛谷P2336 [SCOI2012]喵星球上的点名

用广义SAM写的。特意加了注释。感觉对SAM的感觉又深入了一些。#include <cstdio>#include <map>#define N 100010using namespace std;inline char gc() { static char now[1<<16], *S, *T; if(S == T) {T = (S =...

2018-05-22 22:02:17 241

原创 洛谷5月月赛

Task1n堆石子,每次可以从第i堆中取走一个当且仅当Ni > Ni-1(第0堆视作0个)。拿不了就输了。问先手赢还是后手赢。奇偶性问题。不管如何分布,必定全部被拿完。#include <cstdio>inline char gc() { static char now[1<<16], *S, *T; if(S == T) {T = (S = now...

2018-05-22 13:28:13 301

原创 字符串系列(五)——多模式串匹配强有力的工具AC自动机

之前太年轻,觉得学了SAM、Hash就不再需要AC自动机了。但Hash的弊病就是要挨位尝试,其时间复杂度O(nm)无法承受。而SAM的弊病就是其占用的空间过大(多乘了2),并且速度也很慢!!!!!(复杂度同Hash)一般AC自动机题目串长都会给到1e6,SAM很轻易就会挂掉。而我们今天的主角AC自动机,复杂度仅仅是所有串的长度和。而对于字典树,也完全没有必要开太大的空间。这里给出一个字典树全字符缩...

2018-05-21 21:46:44 239

原创 洛谷P3242 HNOI2015 接水果

也是我做的第一个整体二分题吧。主要是要分析每一个盘子的贡献。包含path(u, v)这条路径的路径,记为(x, y)。(u比v的dfn小,x比y的小)那么有两种情况。①u不是v的祖先此时,x与y势必要分别为u的子树、v的子树(包含u、v)。②u是v的祖先这个时候就较为麻烦。首先,一个端点肯定在v的子树中(包含v)。而另一个端点,较为麻烦。令w为u的儿子,且同时为v的祖先。那么这个端点可以取w这棵子...

2018-05-17 20:00:08 283

原创 TJOI2018 d1t2 智力竞赛

题意不太明确......这题的n需要一上来就+1。就是求一个可交最小路径覆盖,二分答案即可。不知道为什么我的常数那么大,别人几乎300ms就完事了,我需要800ms。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;inline char gc() { ...

2018-05-15 22:21:33 330

原创 TJOI2018 d2t1 碱基序列

自古字符串题目,不是后缀就是dp......f[i][j]表示匹配到第i个串,已经匹配到了主串的第j位时的方案数。初值:f[0][x] = 0 (x∈[0, 10000])用哈希去判是否能更新。如果保险起见可以用KMP(单模式串匹配问题)。#include <cstdio>#include <cstring>#define mod 1000000007char s[1...

2018-05-15 21:06:11 362

原创 TJOI2018 d2t2 异或

n个节点的树,每个点有一个不超过1<<30的权值。有两种查询方式:Q1——给x、y,意为求x的子树(包括x)中,点权与y异或的最大值。                           Q2——给x、y、z,意为求x到y这条路径上(包括x与y),点权与z异或的最大值。对于异或最大值问题,考虑使用字典树解决。写了一个非正解的方法,比较愚蠢,线段树套字典树+树链剖分。最早我听说这个方法是...

2018-05-14 22:21:17 321

原创 五道线段树题目(树上操作)

基本都要用到dfs序,转为序列操作。(一)codeforces620E New Year Tree子树颜色种类统计,考虑到最多60种颜色,采用位运算或来保存当前颜色状态即可。#include <cstdio>#define N 400010typedef long long ll;struct edge {int to, next;}e[N<<1];int c[N]...

2018-05-14 19:02:18 419

原创 线段树优化建图

有一种最短路问题,有的边是从区间到区间的,这个时候点操作就不是很好办(边比较多)。于是考虑建线段树优化建图。两颗线段树:入与出。(出表示从这里出发,入表示进到了这个点)于是每条区间加边就可以转为log级别。1、平行节点间,从入连向出一条0边(进入了这个点,当然可以从这个点出发)。2、入线段树中,每个点都像左右儿子区间连0边(进入了这个区间,也可以认为进入了区间的子集)。3、出线段树每个点都像父亲连...

2018-05-10 22:07:47 2558

原创 字符串系列(四)——后缀自动机的小论文总结

好久没有更新这个系列了。这次带来后缀自动机的一些理解与总结,不是很全,因为做的题还尚且太少。日后会通过普通的题解博客来完善。放心,过几天会更新AC自动机的。...

2018-05-09 21:47:38 320

原创 重量平衡树之替罪羊树

替罪羊树的思想,就是每次操作都直接做。然后找这条改动路径上的所有点,找到离root最近,且不平衡的节点,重构这棵子树。平衡的定义:size(lson) ≤ alpha * size且size(rson) < alpha * size。alpha∈(0.5, 1),一般取0.75。时间复杂度应该是均摊的,O(nlogn)。重量平衡树在实际操作时就有很多好处(比如我心爱的treap)。就比如bz...

2018-05-09 21:38:23 465

原创 扫描线算法(一)之矩形那些事儿

扫描线算法用一条平行于轴的线扫描几何图形,得出某些所求的解。矩形面积并、交实际上就是线段树维护区间并集的长度。这里思考一下,如果要求被覆盖k次的部分的面积和,怎么办?(留坑)矩形周长并如果你想用简单的两个方向分别扫,当然可以了。这里提供一个只扫一次的方法。(为了炫个技锻炼思维水平)node:l、r表示左右端点            lp、rp表示端点有没有被覆盖            cnt表示被...

2018-05-09 21:29:44 905

原创 [Usaco2016 Feb] Load Balancing

平面上有N个点。现在要划两条分别平行于x轴y轴的直线,使得四个部分的点数的最大值趋于最小。O(N²logN)解法请点击:lookas2001这里有一个加强版——N≤1e5,我们就要用更高效的算法去解决。首先依旧把所有坐标离散。我们枚举一条分割线,至多枚举N次。(比如说枚举每一条horizontal line)那么就把这个平面分成上下两部分。上面n1个,下面n2个。(n1 + n2 = n)一条ve...

2018-05-09 21:05:03 336

原创 平衡树及其可持久化

可能是以前受一个指针版本treap的影响,一直是以pair格式去写treap的。 原来引用&这么方便啊。 这篇文章的代码,都是我找到的一些十分优雅的写法。void split(int i,int x,int &a,int &b){ if(!i) a=0,b=0; else { if(w[i]<=x) a=i,split(t...

2018-05-06 12:38:46 878

空空如也

空空如也

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

TA关注的人

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