自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

リーインカーネイション

気づけば I came too far 此博客无限期停用

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

原创 BZOJ2322: [BeiJing2011]梦想封印 线性基

题意:给一个无向图,边上有边权,每次删一条边,询问每次删边后从1号点出发任意走一条路径可能走出多少种不同的权值异或和。 N ≤ 5000,M ≤ 20000,Q ≤20000,权值1e18 先考虑静态版本。 每一条路径都可以看作由一条简单路径和若干个环组成。注意这里的环并不一定需要与路径相连,因为可以从起点绕环走一圈再走回起点,环以外的部分都被异或没了,相当于单独取了一个环。由此可以得到一个初

2017-01-07 19:35:10 776

原创 BZOJ3160: 万径人踪灭 FFT+manacher

题意:给一个字符串,求(不能是连续的一段的)回文子序列的数量。要求回文子序列的字符和位置都必须以某一对称轴对称,就是说“a空格b空格空格a”这样的是不算的。 长度<=100000,只有a、b两种字符。 先考虑允许连续的情况下怎么求。不妨假设原串每两个字符间已经插入了‘#’。先研究每一个对称中心,对其有贡献的字符对满足在它一左一右,距离它距离相等,且字符值相等。如果已经统计出了一个中心两边符合条件

2017-01-07 18:28:39 376

原创 BZOJ1444: [Jsoi2009]有趣的游戏 矩阵求逆+AC自动机

题意:N个人,每个人有一个长度为L的字符串,字符都在前M个大写字母中,现开始连续地随机产生字符,每次产生某个字符的概率是固定的,当一个人的字符串被产生出来他就赢了,求每个人赢的概率。 N,M,L<=10 百度了一下没查着和我一样用矩阵求逆做的。。。好像精度要求不高,邻接矩阵自乘几次就能过? 算了。。。首先赢不了的人可以特判掉,所有人都赢不了就直接退出(我觉得这样应该可以防止矩阵不可逆),建一下

2017-01-06 17:01:36 1159 1

原创 BZOJ3626: [LNOI2014]LCA LCT

给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。 有q次询问,每次询问给出l r z,求sigma_{l<=i<=r}dep[LCA(i,z)]。 (即,求在[l,r]区间内的每个节点i与z的最近公共祖先的深度之和) n,q<=50000 对于a和b,如果我们要求d

2017-01-04 21:29:17 850

原创 BZOJ3053: The Closest M Points kdtree

题意:k维空间n个点,t个询问,每次找m个最近点,保证答案唯一。 1 <= n <= 50000,1 <= k <= 5,1 <= t <= 10000,1 <= m <= 10,多组数据。 kdtree专属裸题。 有些网站说kdtree建树时每次找方差最小的一维建树什么的,我以亲身经历表示那根本不靠谱,这题坐标值范围才10000,算个方差都快爆double了,老老实实按12345维顺序建就好

2017-01-04 21:15:56 396

原创 BZOJ4373: 算术天才⑨与等差数列 线段树

题意:一个序列,两种操作:1.单点修改 2.查询[l,r]内的数由小到大排序后能否形成公差k的等差数列 1<=n,m<=300000,0<=a[i]<=10^9,强制在线 正解是这么说的。。。若能形成公差为k的等差数列则:1.最大值=最小值+(r-l)*k ,2.相邻两数之差都为k的倍数 ,3.没有重复元素 第一个好维护,第二个差分后维护,由于公共gcd从下到上是单调不增的所以均摊log,关

2017-01-04 21:10:09 519

原创 BZOJ3932: [CQOI2015]任务查询系统 可持久化线段树

题意:一个长度为n时间轴,m个带权值的任务,每个任务是一段连续时间,n个询问,每次询问某时间正在进行的任务中前k大的权值之和。 数据规模100000。 每个时间创建一棵可持久化线段树,任务拆成一个加入和一个删除,建好一排树之后每次去里面查询就好。 叶子节点需要特判,这个试了很多方法也没法避免,况且这题里可能一个叶子中有多个,只需要取一部分,也就是sum/size*k。 然后好像真没什么特别的

2017-01-04 20:42:53 416

原创 BZOJ3489: A simple rmq problem kdtree

题意:给出一个长度为N的序列,M个询问,每次询问[L,R]中只出现过一次的最大数,不存在输出0,强制在线 N<=100000 M<=200000 卡时神器kdtree暴力水过。 用set预处理出每个元素i前面一个和它相等的元素pre[i]和后面一个和它相等的元素nex[i],则查询变为查询l<=pos<=r,pre < l,nex > r的元素中最大的,用三维kdtree 暴力就可以了。

2017-01-04 20:11:46 424

原创 BZOJ3832: [Poi2014]Rally 拓扑排序

给定一个N个点M条边的有向无环图,每条边长度都是1。 请找到一个点,使得删掉这个点后剩余的图中的最长路径最短。 2<=N<=500000,1<=M<=1000000 DAG可能有多个起点和终点,所以不妨建S点和T点作为所有点的起点和终点,这样整个图中的最长路就是S到T的最长路。接下来考虑如何动态维护即可。 对于每一个点很容易求出S到它的最长路和它到T的最长路,也就处理出了每一条边两端到S和T

2017-01-04 11:54:08 583

原创 BZOJ2555:SubString 后缀自动机 LCT

给你一个字符串init,要求你支持两个操作 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 你必须在线支持这些操作。 字符串最终长度 <= 600000,询问次数<= 10000,询问总长度<= 3000000 一个子串出现的次数等于后缀自动机的parent树(也就是反串的后缀树)上这个串对应的节点集合内元素的数量。由pa

2017-01-04 10:43:39 328

原创 BZOJ2428: [HAOI2006]均分数据 模拟退火

题意:N个数分成M组,要求均方差最小 N<=20,M<=6 随机一种分法,然后模拟退火,每次把一个数随机分到另外一组,若rand(0,1)< exp(dt/T)则判定为成功。然而WA了很久,最后知道温度高的时候需要贪心把它放入当前和最小的一组。。。还是不行,于是改成了从头模拟退火20次才终于过了,慢得垫底,真玄学#include<cstdio>#include<cstdlib>#includ

2017-01-03 19:41:40 527

原创 BZOJ1565: [NOI2009]植物大战僵尸 最小割 拓扑排序

题意:N*M草地,每个植物有权值,可正可负。每个植物被同一行右边植物保护,每个植物还能额外保护一些其他的植物。求吃掉一些植物的最大收益。 n<=20,m<=30。 显然是最大权闭合子图模型,用最小割解决。 由于图里有环,所以不能直接跑网络流。(如果一个环中一个点连源点,一个点连汇点,最小割只会割掉其中一条,但实际上,所有环上的点都不能选。) 但是tarjan缩点是不行的,因为如果一条路径上出

2017-01-03 18:15:42 606

原创 BZOJ3622: 已经没有什么好害怕的了 DP

题意:有N个糖果,N个药片,每个糖果和药片都有权值,求所有的两两配对方案中,糖 > 药的组数比药 >糖的组数多k组的方案数。n<=2000,保证所有权值不相同。 将问题转化为求糖 > 药的组数正好(n+k)/2组的方案数,若不是整数则显然为0。由于与顺序无关,所以可以先对两组数据排序。 接下来考虑如何设计状态。 排完序后,容易预处理出每一个糖果大于多少个药片(记为cnt[i])。设f[i][j

2017-01-03 17:12:55 399

原创 BZOJ3621: 我想那还真是令人高兴啊 复数运算

题意:给出一对三角形,已知其中一个是由另一个绕某一点旋转放缩而得到,求这个点的坐标。每个测试点有T(<=10)组数据。 一开始以为是计算几何,然而向量的旋转和放缩是两种操作,复数却可以一步完成。 对于复数a和b,a*b的几何意义为a与b长度相乘,极角相加。 那么本题就可以看成从旋转点出发,指向其中一个三角形顶点的三个复数向量乘以同一个复数后变成了从旋转点出发,指向另一个三角形顶点的三个复数向量

2017-01-03 16:23:56 320

原创 BZOJ3620: 似乎在梦中见过的样子 KMP

题意:给出一个小写字母字符串,求形如ABA(A的长度>=k)的子串个数。位置不同其他性质相同的子串算不同子串,位置相同但拆分不同的子串算同一子串。 n<=15000 , k<=100 暴力枚举左右端点就能过。 枚举每个左端点当做首字符进行KMP,对于一个右端点,沿着fail指针跳回去,经过的节点能满足”首字符到这个字符构成的前缀也是当前的后缀“。所以找到一个尽可能长的匹配前缀使得len*2+1

2017-01-03 15:52:38 517

原创 BZOJ2648&2716 kdtree

题意:初始给定一些点,两种操作:1.询问一个点的最近点 2.加点 替罪羊kdtree即可,由于这题是我第一次写kdtree找最近点,查询写崩了,用读入优化卡时过的。。。 而且中途出现了很多问题: 1.树为空要返回0,要不就崩了 2.建树时记得更新size 3.初始50W个点,操作50W次,最多可能有100W个点 4.nth_element的比较函数我穿了个小于等于进去。。。无限RE#in

2017-01-03 15:44:10 567

原创 BZOJ1941: [Sdoi2010]Hide and Seek kdtree

题目大意:给定n个点,求其中一个点使得到其它所有点中的最远距离和最近距离差值最小,距离定义为曼哈顿距离。 N<=500000,0<=X,Y<=10^8 用kdtree暴力枚举每一个点即可。注意算距离时不能算自己。 最远距离的估价为max(abs(x-xmin)、abs(x-xmax))+max(abs(y-ymin)、abs(y-ymax))。#include<cstdio>#include

2017-01-03 15:26:45 540

原创 BZOJ2850: 巧克力王国 kdtree

题意:n个平面上的带权点,每次给出a,b,h,询问满足ax+by#include<cstdio>#include<algorithm>using std::nth_element;typedef long long ll;struct chok{ int p[2],v; chok(){} chok(int x,int y,int z):v(z){p[0]=x,p[1

2017-01-03 15:15:46 789

原创 BZOJ3674: 可持久化并查集加强版 rope

n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 请注意本题采用强制在线,所给的a,b,k均经过加密,加密方法为x = x xor lastans,lastans的初始值为0 0 < n,m <= 2*10^5 只要将数组可持久化即可,但如果使用rope,需要注意以

2017-01-03 15:06:45 439

原创 BZOJ2938: [Poi2000]病毒 AC自动机

题目大意:给出一些01串,问是否存在一个无限长的串不包含这些串中的任意一个。 总长不超过30000。 建立AC自动机,则问题转化为在AC自动机上找环。考虑什么样的节点不能走。若一个节点是单词节点,那么所有fail指向它的节点一定包含了它作为后缀,所以这些节点都不能走。所以对于一个节点,如果它的fail节点危险,那么它也危险。所以不走危险节点,DFS查找是否有环即可。 由tarjan的过程类比,

2017-01-02 20:50:03 421

原创 BZOJ3926: [Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机

题目大意:N个节点的树,每个节点有一种颜色,问存在多少种颜色序列不同的路径。 1<=n<=100000,颜色种类<=10,叶子节点最多有10个 广义后缀自动机是把多个串建到同一个后缀自动机中,该自动机可以识别所有串的所有后缀。以一棵trie树为例,广义后缀自动机在分叉处保存当前的last指针,并在一条支路结束后将last指针调回分叉处保存的指针,然后再进入另一支路。 广义后缀自动机的构建要注意

2017-01-02 20:02:02 444

原创 BZOJ2321 [BeiJing2011集训]星器 能量守恒定律

给你一个字符串init,要求你支持两个操作 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 你必须在线支持这些操作。 字符串最终长度 <= 600000,询问次数<= 10000,询问总长度<= 3000000 一个子串出现的次数等于后缀自动机的parent树(也就是反串的后缀树)上这个串对应的节点集合内元素的数量。由parent树

2017-01-01 11:07:25 564

空空如也

空空如也

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

TA关注的人

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