摘要: [TOC] BZOJ1911 特别行动队 [题目传送门][1] 题解 典型的斜率优化$Dp$。首先如果我们记$sum[i]$表示前$i$个士兵的战斗力之和,那么我们比较容易的可以得出$O(n^2)$的$Dp$:$f[i]=max(f[j]+a (sum[i] sum[j])^2+b (sum[i] 阅读全文
posted @ 2018-08-06 22:12 Apocrypha 阅读(141) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1202 狡猾的商人 [题目传送门][1] 题解 刚开始看题了之后第一反应就是差分约束,后来发现自己可能已经不怎么会差分约束,就准备放弃这道题目去看题解了,但是看到题解大部分都是并查集,才发现这题可能并不用差分约束(虽然差分约束也是可以做的)。我们用带权并查集维护每一个月收入,记 阅读全文
posted @ 2018-08-06 21:54 Apocrypha 阅读(153) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1007 水平可见直线 [题目传送门][1] 题解 经典的单调队列进行维护,先将所有的直线以斜率$A$为第一关键字,以与$y$轴交点高度$B$为第二关键字进行排序。考虑加入一条直线,如果斜率与$A[st[top]]$相同,那么可以直接弹出队首元素(因为肯定会被覆盖掉)。然后判断该 阅读全文
posted @ 2018-08-06 21:44 Apocrypha 阅读(118) 评论(0) 推荐(1)
摘要: [TOC] BZOJ2150 部落战争 [题目传送门][1] 题解 对于每个点拆点之后,每个点都向它能够到达的点的入点连边,跑二分图最大匹配,最后所需的军队个数就是总城镇个数减去匹配个数。因为有一对点能够匹配就说明这两个城镇可以由一只军队征服,所以所需军队=总城镇个数 匹配个数。 code incl 阅读全文
posted @ 2018-08-06 21:33 Apocrypha 阅读(208) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1015 星球大战starwar [题目传送门][1] 题解 比较经典的离线题目,我们将所有的数据读入之后,从后往前离线处理,用并查集维护就行了。注意一个星球被炸掉了之后,这个星球也会消失(即不算在联通块之内)。 code include using namespace std; 阅读全文
posted @ 2018-08-06 21:27 Apocrypha 阅读(172) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1303 中位数图 [题目传送门][1] 题解 有点考验思维的一题。对于这个排列,我们实际上并不需要知道这个排列中每个数的值,实际上我们只需要知道这个数是否比$b$大就行了。所以我们先把所有的数都转化成1或者 1,表示这个数比$b$大或者小。然后记$sum[i]$为修改之后前$i 阅读全文
posted @ 2018-08-06 21:23 Apocrypha 阅读(265) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1050 旅行comf [题目传送门][1] 题解 比较妙的一道题。刚开始看到题的时候,感觉可能是两个二分,但是发现这样找到的答案不一定是最优的。然后发现他的边只有5000条,所以我们将边按权值从小到大排序,枚举每一条边,让这条边作为最小的那条边(即只枚举边权比它大的边),跑最小 阅读全文
posted @ 2018-08-06 21:13 Apocrypha 阅读(245) 评论(0) 推荐(0)
摘要: [TOC] BZOJ3196 二逼平衡树 [题目传送门][1] 题解 比较经典的一道树套树题目了吧,然而先做了带插入区间第$K$小值之后,这题就比较简单了。外层用线段树,里面套一棵平衡树,这里用了$Splay$。不过需要注意的是,查询排名为$K$的数的时候需要二分,然后到树套树中进行查询排名。这样总 阅读全文
posted @ 2018-08-06 21:06 Apocrypha 阅读(147) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1922 大陆争霸 [题目传送门][1] 题解 有点意思的一道题目,相当于是带限制的最短路,我们记$d[i]$表示第$i$个点被几个防御装置保护,$d1[i]$表示如果没有限制的话,到达第$i$个点的时间,$d2[i]$表示实际到达第$i$个点的时间。我们在跑$Dijstra$的 阅读全文
posted @ 2018-08-06 20:59 Apocrypha 阅读(185) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1497 最大获利 [题目传送门][1] 题解 比较容易想到的一道网络流。从源点向每一个中转站连一条流量为$Pi$的边,从每个中转站向其对应的消费人群连一条流量为$inf$的边,从每个消费人群向汇点连一条流量为$Ci$的边。然后就转化成了最小割的问题了。由于中间消费人群与中转站的 阅读全文
posted @ 2018-08-06 20:51 Apocrypha 阅读(150) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1798 维护序列Seq [题目传送门][1] 题解 比较简单的支持区间加和区间乘的线段树,注意$pushdown$的时候区间加和区间乘的处理即可。 code include using namespace std; typedef long long ll; bool Fini 阅读全文
posted @ 2018-08-06 20:42 Apocrypha 阅读(204) 评论(0) 推荐(0)
摘要: [TOC] BZOJ3172 单词 [题目传送门][1] 题解 裸的AC自动机,构造出AC自动机之后,将每一个节点的出现次数都累加到它的$fail$节点上去,最后得到的就是答案了。 code include using namespace std; typedef long long ll; boo 阅读全文
posted @ 2018-08-06 20:39 Apocrypha 阅读(184) 评论(0) 推荐(1)
摘要: [TOC] BZOJ3175 攻击装置 [题目传送门][1] 题解 emm...似乎说这个是最大独立集,可能之前并不知道有这个东西。由于攻击装置是攻击日字形的,所以我们可以根据奇偶性构造二分图,跑出二分图的最大匹配之后,用总的点数减去匹配个数就是答案了(因为这所有的匹配中,每一对只能够选择一个)。 阅读全文
posted @ 2018-08-06 20:36 Apocrypha 阅读(167) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1191 超级英雄Hero [题目传送门][1] 题解 裸的二分图匹配,直接跑匈牙利即可。 code include using namespace std; typedef long long ll; bool Finish_read; templateinline void 阅读全文
posted @ 2018-08-06 19:52 Apocrypha 阅读(149) 评论(0) 推荐(1)
摘要: [TOC] BZOJ1059 矩阵游戏 [题目传送门][1] 题解 刚开始理解错题意了,以为除了主对角线上之外都不能有1.后来发现只要主对角线上可以都是1就是合法的了。实际上的题意就是让你判断$n$行与$n$列是否可以都匹配上,这样就是一个比较简单的二分图匹配,如果第$(i,j)$位置上为1,就说明 阅读全文
posted @ 2018-08-06 19:51 Apocrypha 阅读(188) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1083 繁忙的都市 [题目传送门][1] 题解 水题,裸的最小生成树 code include using namespace std; typedef long long ll; bool Finish_read; templateinline void read(T &x) 阅读全文
posted @ 2018-08-06 19:45 Apocrypha 阅读(130) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1192 鬼谷子的钱袋 [题目传送门][1] 题解 比较水的题目,只要知道用1、2、4...$2^n$可以组成$[1,2^{n+1})$这个区间里的任意一个数这个结论就行了。 code include using namespace std; typedef long long 阅读全文
posted @ 2018-08-06 19:42 Apocrypha 阅读(207) 评论(0) 推荐(0)
摘要: [TOC] BZOJ4240 有趣的家庭菜园 [题目传送门][1] 题解 一个比较好的贪心+树状数组的题目。通过题目我们可以容易地发现我们的目标就是要构造一个数列,使得这个数列是一个单峰数列,并且使得交换的次数最少。实际上交换次数最少就是一个求逆序对的过程,用树状数组就可以简单地解决。而要构造这个单 阅读全文
posted @ 2018-08-06 19:38 Apocrypha 阅读(141) 评论(0) 推荐(0)
摘要: [TOC] BZOJ4320 Homework [题目传送门][1] 题解 看了题解之后发现是一个比较妙的分块+离线+并查集的做法。首先我们以30000为界,那么当询问$\leq 30000$的时候,我们就可以开个桶暴力进行查找。如果大于30000,那么我们就枚举30000以内$x$的倍数,然后通过 阅读全文
posted @ 2018-08-06 19:30 Apocrypha 阅读(281) 评论(0) 推荐(0)
摘要: [TOC] BZOJ4364 wall砖墙 [题目传送门][1] 题解 一道比较好想的线段树。线段树每个节点维护当前区间的最低高度$Mn$与最高高度$Mx$。然后每次询问的时候记得用父节点的值更新子节点的$Mn$和$Mx$就行了,最后每个叶子节点的$Mx$就是答案了。 code include us 阅读全文
posted @ 2018-08-06 19:16 Apocrypha 阅读(116) 评论(0) 推荐(0)
摘要: [TOC] BZOJ4321 queue2 [题目传送门][1] 题解 有点麻烦的$Dp$。首先我们记$Dp[i][j][0...1]$表示枚举到第$i$个 ~~傻叉~~ 沙茶的时候,一共有$j$对个沙茶是不合法,并且第$i$个沙茶与第$i 1$个沙茶是否相邻。然后我们开始分析转移状态: 先从第$i 阅读全文
posted @ 2018-08-06 19:09 Apocrypha 阅读(223) 评论(0) 推荐(2)
摘要: [TOC] BZOJ4368 boxes纪念品盒 [题目传送门][1] 题解 一道比较妙的题目。我们发现送纪念品的走法只有三种: 1.往左边走,往左边回 2.往右边走,往右边回 3.绕一圈 然后我们可以简单的证明出来第三种的操作不会多于一次,因为如果多于一次的话,说明纪念品的个数$\geq k$个, 阅读全文
posted @ 2018-08-06 18:21 Apocrypha 阅读(278) 评论(0) 推荐(0)
摘要: [TOC] BZOJ4318 OSU! [题目传送门][1] 题解 一道比较简单的期望$Dp$。我们记$f[i]$为到第$i$位时的期望分数,$g[i]$为期望长度,分析一下转移我们可以发现连续1的长度从$x 1$变成$x$时,贡献变化为$f[i]=f[i 1]+(3 g[i−1]^2+3 g[i− 阅读全文
posted @ 2018-08-06 18:11 Apocrypha 阅读(259) 评论(0) 推荐(0)
摘要: [TOC] BZOJ4247 挂饰 [题目传送门][1] 题解 一个比较简单的$Dp$,我们可以发现挂饰的总个数只有2000个,所以如果挂钩的个数超过了2000个,就没有意义去记录了。所以我们记$f[i]$表示当前挂钩为$i$个的时候能够到达的最大的贡献是多少。然后将挂饰按挂钩个数从大到小排序,进行 阅读全文
posted @ 2018-08-06 17:57 Apocrypha 阅读(214) 评论(0) 推荐(0)
摘要: [TOC] BZOJ4300 绝世好题 [题目传送门][1] 题解 比较简单的$DP$,记$f[i]$表示第$i$位为1,最长的长度为多少。只需要枚举每一个数字,对于这个数字二进制下为1的那一位进行更新就行了。 code include using namespace std; typedef lo 阅读全文
posted @ 2018-08-06 17:52 Apocrypha 阅读(149) 评论(0) 推荐(0)
摘要: [TOC] BZOJ1500 维修数列 [题目传送门][1] 题解 一道比较全的平衡树题目,操作比较多,注意一下如果不回收节点的话可能会$MLE$,手写个内存池就行了 code include using namespace std; typedef long long ll; bool Finis 阅读全文
posted @ 2018-08-06 16:33 Apocrypha 阅读(215) 评论(0) 推荐(0)
摘要: [TOC] BZOJ2160 拉拉队排练 [题目传送门][1] 题解 比较裸的回文自动机题目。构建出回文自动机之后,就可以把所有回文子串的长度记录下来,然后$sort$一下,选出前$K$个,然后快速幂计算答案就行了。 code include using namespace std; typedef 阅读全文
posted @ 2018-08-06 16:24 Apocrypha 阅读(191) 评论(0) 推荐(0)
摘要: [TOC] BZOJ2342[SHOI2011]双倍回文 [题目传送门][1] 题解 其实是manacher的题目,但是也是可以用回文自动机做的。构建出回文自动机之后,就可以在回文数上进行DP,如果一个点代表的回文串的长度为4的倍数,并且存在长度为它一半的后缀,就是一个满足答案的回文串。关键就在于如 阅读全文
posted @ 2018-08-06 16:18 Apocrypha 阅读(182) 评论(0) 推荐(0)
摘要: KdTree模板 code: include using namespace std; typedef long long ll; bool Finish_read; templateinline void read(T &x){Finish_read=0;x=0;int f=1;char ch=g 阅读全文
posted @ 2018-08-06 15:58 Apocrypha 阅读(223) 评论(0) 推荐(0)
摘要: 替罪羊树模板 Code(指针版): Code(数组版): cpp include using namespace std; typedef long long ll; bool Finish_read; templateinline void read(T &x){Finish_read=0;x=0 阅读全文
posted @ 2018-08-06 15:55 Apocrypha 阅读(447) 评论(0) 推荐(0)
摘要: 后缀自动机模板 code: 阅读全文
posted @ 2018-08-06 15:53 Apocrypha 阅读(131) 评论(0) 推荐(0)
摘要: 回文自动机模板 code: include using namespace std; typedef long long ll; bool Finish_read; templateinline void read(T &x){Finish_read=0;x=0;int f=1;char ch=ge 阅读全文
posted @ 2018-08-06 15:52 Apocrypha 阅读(162) 评论(0) 推荐(0)
摘要: 主席树模板 code: include using namespace std; typedef long long ll; bool Finish_read; templateinline void read(T &x){Finish_read=0;x=0;int f=1;char ch=getc 阅读全文
posted @ 2018-08-06 15:51 Apocrypha 阅读(148) 评论(0) 推荐(0)
摘要: FFT模板 code: include using namespace std; typedef long long ll; bool Finish_read; templateinline void read(T &x){Finish_read=0;x=0;int f=1;char ch=getc 阅读全文
posted @ 2018-08-06 15:49 Apocrypha 阅读(164) 评论(0) 推荐(0)
摘要: [TOC] Cqoi2018 Day1 社交网络 题目背景: 当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分。通常,一个用户在社交网络上发布一条消息(例如微博、状态、Tweet等)后,他的好友们也可以看见这条消息,并可能转发。转发的消息还可以继续被人转发,进而扩散到整个社交网络中。 题 阅读全文
posted @ 2018-08-06 15:42 Apocrypha 阅读(277) 评论(0) 推荐(0)
摘要: [TOC] "E. Garlands" 题意: 给出你一个n m矩阵,矩阵中有一些灯泡,这些灯泡连成了k条互不重叠的链。每个灯泡都有一定的权值w,但是只有当灯泡打开的时候,才会产生贡献,刚开始所有的灯泡都是开着的。共有q次询问,有两种操作: ①$Switch$ $i$——表示将编号为i的链所有的灯泡 阅读全文
posted @ 2018-08-06 15:34 Apocrypha 阅读(280) 评论(0) 推荐(0)
摘要: [TOC] "NOI2018 Day1 return" 题解 作为NOI Day1 的T1,这道题目还是比较清真的(虽然自己在同步赛的时候只打了70分的部分分,然后数组开小了挂成了55分。。)正解的方法似乎有很多,可持久化并查集什么的都可以做。但个人认为还是Kruskal重构树的方法比较好些,也比较 阅读全文
posted @ 2018-08-06 15:32 Apocrypha 阅读(237) 评论(0) 推荐(0)
摘要: [TOC] "NOI2018 Day2 dragon" 题解 开场开了T3之后发现T3根本不可做,于是集中精力刚T1和T2,但是机房猝不及防的断电三次,神TM整整少了半个小时做题时间。T1只码了70分,T2 15分暴力还挂成了10分。 这题的做法还是比较清真的,部分分也很多,打了简单的60分暴力之后 阅读全文
posted @ 2018-08-06 15:20 Apocrypha 阅读(301) 评论(0) 推荐(0)
摘要: [TOC] 知识点概要 在各种二叉平衡树中,大多数的平衡树都是通过旋转来维护这棵二叉查找树的性质,并且尽量保证每次的查找的复杂度为$log$的。然而说实话,各种情况的旋转很容易写挂,考场上一旦写挂掉就会心态爆炸,所以我们或许可以通过一些奇妙的方法来使这棵二叉平衡树能够拥有与有需要旋转的二叉查找树同样 阅读全文
posted @ 2018-08-06 15:19 Apocrypha 阅读(339) 评论(0) 推荐(0)
摘要: [TOC] "BZOJ3065 带插入区间K小值" 题意 Description 从前有$n$只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力$a[i]$。跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴。这时跳蚤国王决定理性愉悦一下,查询区间$k$小值。他每次向它的随从伏特提出这样的问题: 从 阅读全文
posted @ 2018-08-06 15:17 Apocrypha 阅读(215) 评论(0) 推荐(0)
摘要: [TOC] 前言 最近刷BZOJ的题目的时候,发现做到了很多题目都是用到了斜率优化,这个优化很早也接触过,但也没有仔细地去学。最近认真的去学了一下,就在这里做个整理 概要 斜率优化是基于单调队列或单调栈的一种优化DP的方式,当DP的决策具有单调性的时候,我们就可以通过维护单调队列或者单调栈来维护这个 阅读全文
posted @ 2018-08-06 15:16 Apocrypha 阅读(286) 评论(0) 推荐(0)
摘要: ##前言 FFT其实在很早的时候就已经接触到了,但是那个时候学起来有点仙,感觉这东西离实际解题的距离有点远,不如那些其他的数据结构那么直接。但是半年多下来的做题,发现FFT其实应用的十分广泛,并且很多数学题推出公式之后就可以套用FFT进行计算。所以对于FFT的理解也不能仅仅只是停留于背板子的阶段了, 阅读全文
posted @ 2018-08-06 14:56 Apocrypha 阅读(1198) 评论(0) 推荐(0)
摘要: 201808/1458288 20180807123717064 920290696.jpg) 阅读全文
posted @ 2018-08-06 14:20 Apocrypha 阅读(257) 评论(0) 推荐(1)