BZOJ
Duan2baka
人
展开
-
BZOJ[1195][HNOI2006]最短母串 AC自动机+状态压缩
传送门ber~AC自动机多记录一个state" role="presentation" style="position: relative;">statestatestate表示这个点代表的状态 把所有串插进AC自动机里,串i" role="presentation" style="position: relative;">iii的末尾的state" role="presentation"原创 2018-01-24 14:43:53 · 761 阅读 · 3 评论 -
BZOJ[1984]月下“毛景树” 树链剖分+线段树
传送门ber~边权放到下面的点上,统计/修改时不算他俩的LCA Add时: ①上面已经有覆盖标记——覆盖标记+k ②没有覆盖标记——加标记+k 覆盖时 ①上面已经有加标记——加标记清零,覆盖标记打上 ①上面没有加标记——加标记清零,覆盖标记打上…代码如下:#include#include#include#define N 100020using namespac原创 2018-01-15 13:10:17 · 329 阅读 · 0 评论 -
BZOJ[4368][IOI2015]boxes纪念品盒 贪心
传送门ber~刘研绎dalao%%%发现只有三种路线: ①从左面走,从左面回来 ②从右面走,从右面回来 ③直接走一圈注意到如果进行两次③操作的话,一共发了2k个礼物,根据抽屉原理,一定有哪一边物品数量>=k>=k,即两次③转化为①/②+③,结论就是整个过程中最多只进行一次③设左半部分一共有toptop个点,右半部分一共有top1top1个点 枚举路线①送多少个点i,i∈[t原创 2018-01-15 09:44:20 · 655 阅读 · 1 评论 -
BZOJ[1086][SCOI2005]王室联邦 块状树
传送门ber~块状数据结构 秒杀一切题目!秒杀一切题目!代码如下:#include#include#define N 1050using namespace std;inline int read(){ int x=0,f=1;char c; do c=getchar(),f=c=='-'?-1:f; while(!isdigit(c)); do x=(原创 2018-01-14 17:16:11 · 373 阅读 · 2 评论 -
BZOJ[2038][2009国家集训队]小Z的袜子(hose) 莫队
传送门ber~要求区间[l,r][l,r]内选出两个相同颜色的概率,即求 (C2cnt1+C2cnt2+...+C2cntk)/C2r−l+1(C^{2}_{cnt_1}+C^{2}_{cnt_2}+...+C^{2}_{cnt_k})/C^{2}_{r-l+1} (cnt21−cnt1+cnt22−cnt2+...+cnt2k−cntk)2/(r−l+1)∗(r−l)2\frac原创 2018-01-14 13:53:49 · 267 阅读 · 0 评论 -
BZOJ[3781]小B的询问 莫队
传送门ber~莫队算法直接上 按在同一个块内按右端点排序,不在同一个块按所在块的编号排序将询问按左端点排序 枚举询问,不断移动左右端点,按这种顺序可以保证复杂度为n1.5n^{1.5}代码如下:#include#include#include#include#define N 50050using namespace std;inline int read(){原创 2018-01-12 18:41:34 · 413 阅读 · 0 评论 -
BZOJ[2120]数颜色/BZOJ[2453]维护队列 分块
传送门ber~ber~记录preipre_i和前一个第ii位颜色相同的是哪一个,在查询区间ll~rr时只需要在该区间找出prepre小于ll的记录就可以求出每个点的prepre后将序列分块,每块按prepre从小到大排序,查询时对于完整的块二分查找,对于不完整的块暴力统计就可以 修改时重建,如果这位的prepre不一样了,就重建该块代码如下:#include#include#原创 2018-01-12 14:37:24 · 360 阅读 · 0 评论 -
BZOJ[2002]弹飞绵羊 分块
传送门ber~不会写LCT-。-,分块水过 记录多少次能跳出自己的块,和跳到的点是哪个修改时更改本块x之前的部分 统计时模拟一遍就可以了LCT题解可以看这个人代码如下:#include#include#include#define N 200050using namespace std;inline int read(){ int x=0,f=1;char原创 2018-01-12 08:06:48 · 444 阅读 · 0 评论 -
BZOJ[3343]教主的魔法 分块+二分
传送门ber~分块题构造:每个块排遍序,块大小为n−−√\sqrt n 加值:给完整的块打标记,不完整的块暴力重构(重新排序) 查询:在每个完整的块中二分查找,不完整的快中暴力判断代码如下:#include#include#include#include#define N 1000050using namespace std;inline int read(){原创 2018-01-12 00:27:23 · 389 阅读 · 0 评论 -
BZOJ[2724][Violet 6]蒲公英 分块
题目链接求区间众数,最暴力的方法就是枚举区间所有的数,枚举时顺便更新 妥妥TLE可以用分块来优化,先将初始数列离散化,发现区间众数只可能是所有完整的块组成的区间的众数和不完整的块中的数可以预处理出数组sumi,jsum_{i,j}表示在前jj个块中数字ii出现了多少次,fi,jf_{i,j}表示第ii块到第jj块的众数是多少统计时枚举不完整的块中的数,初始的出现次数(numnum原创 2018-01-11 16:59:32 · 571 阅读 · 0 评论 -
BZOJ[3196]Tyvj 1730 二逼平衡树 树套树
题目链接线段树套平衡树 对于opt=1,在每个区间找出所有比k小的数,求和+1即为k的排名 对于opt=2,二分排名为k的值,如果该数存在的话答案就是这个数,不存在答案则为它的前驱 对于opt=3,在平衡树上删除再添加即可 对于opt=4,5,每段区间找一个,求他们的max/min即可这里套的是Splay一些细节:对于Splay删除操作,我询问了一些dalao的做法,这...原创 2017-12-28 12:10:00 · 374 阅读 · 0 评论 -
BZOJ[2428][HAOI2006]均分数据 模拟退火
传送门ber~模拟退火骗分每次随机一个点,然后把它随机放入另外一个集合里,如果解更优就更新,如果不是更优,则根据当前温度随机判断是否更新,温度越高更新的几率越高,并不断降温,直到小于精度为止多做几遍即可代码如下:#include#include#include#include#include#define eps 1e-4#define INF 2147483647原创 2018-01-12 16:04:41 · 330 阅读 · 0 评论 -
BZOJ[2733][HNOI2012]永无乡 Splay启发式合并
题目链接题目大意及线段树合并解法在这里每合并两个点,将它俩启发式合并 启发式合并,即把小的暴力往大的那里插 说按前序遍历插复杂度会极其优越??第k大是平衡树基本操作代码如下:#include<algorithm>#include<ctype.h>#include<cstdio>#define N 100050using namespace std;inline int read(){原创 2017-12-29 15:44:30 · 446 阅读 · 0 评论 -
BZOJ[2733][HNOI2012]永无乡 线段树合并+并查集
题目链接 题目大意:给你n个点,每个点有权值k,现有两种操作:将两个点所在联通块合并,查询某个点所在联通块权值第k小是哪个数Splay启发式合并解法在这里这题输出的是点的编号不是点的值…. 对于每个点,开个权值线段树,合并操作用并查集查找,线段树合并 查询操作是权值线段树基本操作,找第kk小的数时,如果左儿子的数超过k个就在左儿子里,否则去右儿子找第k−ls−>sizk-ls->siz的数原创 2017-12-29 14:43:39 · 439 阅读 · 0 评论 -
BZOJ[2743][HEOI2012]采花 树状数组
题目链接因为一段区间必须需要有两个颜色相同的点才有贡献 换句话说,只有第二个点才会有贡献考虑离线,按询问按左端点从小到大将排序 用nexinex_i表示ii号点下一个相同颜色点的位置,firifir_i表示ii号颜色第一个出现的位置开一个树状数组aa 先将每个nexfir[i]nex_{fir[i]}在树状数组上+1 从左到右移动指针ll,同时处理所有左端点为ii的询问,统计l→rl \to原创 2017-12-27 15:15:45 · 279 阅读 · 0 评论 -
BZOJ[1823][JSOI2010]满汉全席 2-SAT
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1823满式和汉式不能同时选 对于每一个要求x,y,不做x就要做y,不做y就要做x,连边 Tarjan判断是否有一种食材既要做满式,又要做汉式(在一个强连通分量中),如果有,则为BAD 其他情况都是GOOD代码如下:#include<algorithm>#include<ctype.h>原创 2017-12-23 20:18:09 · 338 阅读 · 0 评论 -
BZOJ[4327]JSOI2012 玄武密码 AC自动机
题目链接将每个字串插入AC自动机中,用主串上去匹配,每个走过的点x都是主串的一个前缀因为一个点的Fail一定是它的后缀,这样沿着x的Fail一直向上爬就可以标记出每一个出现的子串(前缀的后缀,就是原串的一个字串),遇见标记过的就停止,这样保证每个点只被走一次插入子串时,记录每个子串的结束位置,统计时沿着每个字串的结束点一直向上爬,找到第一个被标记的点就是最长的前缀 注意这里的向上爬的意思是向上爬树原创 2017-12-27 15:00:45 · 538 阅读 · 0 评论 -
BZOJ[1030][JSOI2007]文本生成器 AC自动机+dp
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1030统计所有能匹配到这些串的, 将串的总数(26m26^m)减去匹配不到的就可以统计了 建完AC自动机后,将所有危险点标记,在AC自动机上dp fi,jf_{i,j}表示匹配j个字母后到AC自动机上的点i上,不与危险串匹配的方案有多少 如果i和他的儿子x都不危险,那么fx,j+1=fi原创 2017-12-22 20:37:49 · 312 阅读 · 0 评论 -
BZOJ[2565]最长双回文串 Manacher
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=2565题目要求找由两个回文串拼一起最长的串 只寻找一个回文串Manacher就可以了 如果两个拼在一起,则在Manacher后,对于每个点i,统计是哪个点最先向右/左拓展到i 可以发现,用两个这样的串拼起来肯定会更优 就这么记录答案即可代码如下:#include<algorithm>#原创 2017-12-22 20:31:37 · 317 阅读 · 0 评论 -
BZOJ[2084][Poi2010]Antisymmetry Manacher
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=2084回文串首先会想到Manacher 但本题是让0和1匹配 把匹配条件改为一个1一个0,或两个#,跑Manacher即可 统计答案时要统计区间长度为偶数的,只需统计#作终点的就可以了代码如下:#include<algorithm>#include<cstring>#include<c原创 2017-12-22 20:26:40 · 299 阅读 · 0 评论 -
BZOJ2938[Poi2000]病毒 AC自动机
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=2938发现一个合法的串一定不会与病毒串匹配 如果让它无限长,就说明一直匹配不到病毒串 如果找到一个不经过病毒点的环,那么就存在无限长度的合法串 AC自动机建完图后,再用dfs判断即可代码如下:#include<cstring>#include<ctype.h>#include<cstd原创 2017-12-21 21:28:03 · 414 阅读 · 0 评论 -
BZOJ[1877]晨跑 费用流
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1877 题目大意:给一有向图G,多次从1到n,求代码如下:#include#include#include#define N 505#define INF 2147483647using namespace std;const int S=501;const i原创 2017-12-20 21:04:52 · 312 阅读 · 0 评论 -
BZOJ[1735][Usaco2005 jan]Muddy Fields 泥泞的牧场 网络流
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1735和BZOJ[1693]有些类似,不同的是不能穿过障碍 因为木板是无限长的且可以被覆盖,所以如果在一个地方放木板,那么一定要尽可能往长了放(反正也可以被覆盖) 找出覆盖每个点最长的横木板和竖木板,连一条横竖的边,转化为最小点覆盖问题,跑最大流求出答案代码如下:#include<algor原创 2017-12-19 17:17:59 · 433 阅读 · 0 评论 -
BZOJ[1693][Usaco2007 Demo]Asteroids 网络流
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1693对于点P(i,j)P(i,j),从i行向j列连一条流量为1的边,转化为最小点覆盖问题,跑二分图/最大流即可代码如下:#include<algorithm>#include<cstring>#include<ctype.h>#include<cstdio>#include<queue原创 2017-12-19 13:47:13 · 543 阅读 · 2 评论 -
BZOJ[1208][HNOI2004]宠物收养所 Treap
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1208开两个平衡树,找前驱后继操作和正常的一样.. 用Treap是因为好写代码如下:#include<algorithm>#include<cstdlib>#include<ctype.h>#include<cstdio>#define INF 2147483647using nam原创 2017-12-19 13:43:46 · 307 阅读 · 0 评论 -
BZOJ[1588][HNOI2002]营业额统计 Treap
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1588裸的平衡树,找一个类似于前驱后继的东西,但可以是自己 链表代码见zP1nG的博客代码如下:#include<algorithm>#include<ctype.h>#include<cstdio>#define INF 1000000000using namespace std;原创 2017-12-12 15:46:57 · 460 阅读 · 0 评论 -
BZOJ[4399]魔法少女LJJ 线段树合并
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=4399c<=7!!c<=7!!c<=7!!每新建一个节点,就开一个权值线段树,在连接时将两个线段树合并即可,对于操作3,4,直接查找比k大/小的数有多少个,查找时顺便将范围内的点删除,再全放在k上即可 操作五像平衡树那样随便搞一搞就可以了.. 对于操作六,根据对数的运算性质log(a∗b)=原创 2017-12-12 15:16:35 · 565 阅读 · 2 评论 -
BZOJ[4756][Usaco2017 Jan]Promotion Counting 线段树合并
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=4756裸的线段树合并 对于每个点建一个权值线段树这里采用了动态开点,常数较大(线段树范围是1~MAXN),但是省略了离散化代码如下:#include<ctype.h>#include<cstdio>#define N 100050using namespace std;const in原创 2017-12-09 15:37:59 · 371 阅读 · 0 评论 -
BZOJ[2761][JLOI2011]不重复数字 STL
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=2761傻逼题 就当练STL了代码如下:#include<algorithm>#include<ctype.h>#include<cstdio>#include<set>using namespace std;inline int read(){ int x=0,f=1;cha原创 2017-12-07 14:03:09 · 269 阅读 · 0 评论 -
BZOJ[1696][Usaco2007 Feb]Building A New Barn新牛舍 贪心
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1696分情况讨论: ①如果有奇数个牛,横纵坐标分别取中位数,如果该位置有牛就讨论上下左右(没有挨着的牛) ②如果有偶数个牛,设中位数分别为x1,x2,y1,y2,则在(x1~x2,y1~y2)中没牛的点都是合法的代码如下:#include<algorithm>#include<ctype.原创 2017-12-07 13:39:00 · 327 阅读 · 0 评论 -
BZOJ[2763][JLOI2011]飞行路线 spfa
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=2763DescriptionAlice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。Alice和Bob现在要从一个城市沿着航线到达另一个城市,途中可以进行转原创 2017-12-07 13:29:27 · 274 阅读 · 0 评论 -
BZOJ[2157]旅游 树链剖分+线段树
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2157 DescriptionRay 乐忠于旅游,这次他来到了T 城。T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接。为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间有且只有一条路径。换句话说, T 城中只有N − 1 座桥。Ray 发现,有些桥上可以原创 2017-10-18 20:51:26 · 496 阅读 · 0 评论 -
BZOJ[3378][Usaco2004 Open]MooFest 狂欢节 树状数组
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=3378Description每一年,约翰的N(1≤N≤20000)只奶牛参加奶牛狂欢节.这是一个全世界奶牛都参加的大联欢.狂欢节包括很多有趣的活动,比如干草堆叠大赛、跳牛栏大赛,奶牛之间有时还相互扎屁股取乐.当然,她们会排成一列嚎叫,来欢庆她们的节日.奶牛们的叫声实在刺耳,以致于每只奶牛的听力都原创 2017-10-13 19:27:20 · 563 阅读 · 0 评论 -
BZOJ[1192]鬼谷子的钱袋 乱搞
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1192Description鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一场拍卖会,其中有一件宝物引起了他极大的兴趣,那就是无字天书。但是,他的行程安排得很满,他他已经买好了去邯郸的长原创 2017-10-01 21:40:13 · 310 阅读 · 0 评论 -
BZOJ[3887][Usaco2015 Jan]Grass Cownoisseur Tarjan+拓扑排序
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=3887Description给一个有向图,然后选一条路径起点终点都为1的路径出来,有一次机会可以沿某条边逆方向走,问最多有多少个点可以被经过?(一个点在路径中无论出现多少正整数次对答案的贡献均为1)Sample Input7 10 1 2 3 1 2 5 2 4 3 7 3 5 3原创 2017-10-01 12:04:20 · 443 阅读 · 0 评论 -
BZOJ[2464]中山市选[2009]小明的游戏 SPFA
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=2464Description小明最近喜欢玩一个游戏。给定一个n * m的棋盘,上面有两种格子#和@。游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步能向上,下,左,右四个方向移动一格。如果移动到同一类型的格子,则费用是0,否则费用是1。请编程计算从起始位置移动到目标位置的最小花费。原创 2017-09-30 21:37:27 · 367 阅读 · 0 评论 -
BZOJ[1671][Usaco2005 Dec]Knights of Ni 骑士 Floodfill
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1671Description贝茜遇到了一件很麻烦的事:她无意中闯入了森林里的一座城堡,如果她想回家,就必须穿过这片由骑士们守护着的森林.为了能安全地离开,贝茜不得不按照骑士们的要求,在森林寻找一种特殊的灌木并带一棵给他们.当然,贝茜想早点离开这可怕的森林,于是她必须尽快完成骑士们给的任务,贝茜随原创 2017-09-24 15:06:33 · 395 阅读 · 0 评论 -
BZOJ[1854][Scoi2010]游戏 匈牙利算法
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1854Descriptionlxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示。当他使用某种装备时,他只能使用该装备的某一个属性。并且每种装备最多只能使用一次。 游戏进行到最后,lxhgww遇到了终极boss,这个终极b原创 2017-09-22 20:16:59 · 294 阅读 · 0 评论 -
BZOJ[1191][HNOI2006]超级英雄Hero 匈牙利算法
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1191Description现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或奖金。主持人问题准备了若干道题目,只有当选手正确回答一道题后,才能进入下一题,否则就被淘汰。为了增加节目的趣味性并适当降低难度,主持人总提供给原创 2017-09-22 19:53:21 · 423 阅读 · 0 评论 -
BZOJ[3626][LNOI2014]LCA 树链剖分+线段树
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=3626Description给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。 有q次询问,每次询问给出l r z,求∑i≤ri=ldepLCA(i,z)\sum_{i原创 2017-09-19 21:59:01 · 673 阅读 · 0 评论