09 2018 档案

摘要:"题目蓝链" Solution 我们可以贪心的考虑,就是尽量把小的覆盖完。我们把所有的点从小到大排序,然后直接二分覆盖前$k$个点,用网络流跑一下二分图求出最小链覆盖,然后就判断一下点数减去最小链有没有超过给定的人数 由于这道题的链可以重叠的,所以我们可以直接求出每一个点可达的所有点。然后拆点,对于 阅读全文
posted @ 2018-09-30 21:33 xunzhen 阅读(186) 评论(0) 推荐(0)
摘要:"题目蓝链" Solution 这题显然就是一道BFS的题,但这道题的边数很多,我们怎么保证是$\mathcal{O}(n)$级别的呢 我们只需要维护一个并查集(模拟链表),表示当前还未访问的点。然后我们从当前节点往所有与当前点连了边的未访问到的节点扩展,每到一个点就在链表删掉当前当前的点。这样就能 阅读全文
posted @ 2018-09-30 16:02 xunzhen 阅读(110) 评论(0) 推荐(0)
摘要:"题目蓝链" Solution 这道题我一开始打挂了,因为我没有考虑反转会对修改也产生影响。我们可以考虑建立一颗线段树来维护,对于每一个点开一个标记,标记的每一个二进制为表示在当前子树的第几层会全部翻转。我们只需要在修改和查询的时候把这个标记$push\_down$一下就可以了 另外注意在修改操作的 阅读全文
posted @ 2018-09-29 14:51 xunzhen 阅读(213) 评论(0) 推荐(0)
摘要:1. 空间开小或开爆 2. 求和忘记开$long~long$ 3. 有些只在函数里用的STL就尽量开在函数里,容易忘记清空 4. 数字之间 异或 的时候有可能会 超过原本的值域范围 5. 需要维护区间和的线段树中,凡是和线段树的点值有关的变量都要开$long~long$ 6. 在离散化的时候,不要把 阅读全文
posted @ 2018-09-28 16:05 xunzhen 阅读(308) 评论(0) 推荐(0)
摘要:"题目蓝链" Solution 由于每一个数最多被开根$5$次就会为$1$,所以我们可以用一个并查集维护下一个大于$1$的数的位置。然后再用树状数组维护一下区间和,每次修改直接暴力改就行了,修改的时候在树状数组上更新一下 时间复杂度$\mathcal{O}(n\ log\ log\ val + m\ 阅读全文
posted @ 2018-09-26 22:34 xunzhen 阅读(114) 评论(0) 推荐(0)
摘要:"题目蓝链" Solution 首先$\mathcal{O}(n)$预处理出任意一个前缀的HASH值,然后就可以$\mathcal{O}(1)$求出任意区间的HASH值 然后就直接枚举$k$,统计一下出现了多少种不同的区间段就可以了,用$map$或HASH表均可以实现 时间复杂度$\mathcal{ 阅读全文
posted @ 2018-09-26 22:26 xunzhen 阅读(159) 评论(0) 推荐(0)
摘要:"题目蓝链" Solution 考虑首先建出一棵最小生成树,然后再枚举所有其他的边。然后直接查询这条边对应在树上的两点之间的链上最大值和次大值,因为要保证严格次小。然后用查询的值更新一下答案 维护一条链上的最大值和次大值,直接倍增就行了 Code Summary 这道题的思路不是很难,结果在码码的过 阅读全文
posted @ 2018-09-26 22:19 xunzhen 阅读(129) 评论(0) 推荐(0)
摘要:"题目蓝链" Solution 这道题我们先把$z$离散化一下。然后我们对于每一个操作,直接在树上差分一下,在路径的两端打上对$z$加$1$的标记,在$lca$及其父亲处各打一个$ 1$标记,然后直接线段树合并就可以了 Code cpp include using namespace std; de 阅读全文
posted @ 2018-09-26 22:11 xunzhen 阅读(147) 评论(0) 推荐(0)
摘要:"题目蓝链" Solution 虽然这题加了很多边,但本质上还是一棵树,我们~~只需要~~维护一下链上的和与最大值,然后直接树形DP 但不过这道题的DP比较独特,因为一个节点的DP值可以从它的父亲更新过来。那么这个DP是不是就是有后向性了呢? 其实我们只需要DP两遍就可以了,第一遍DP处理出一个点到 阅读全文
posted @ 2018-09-23 15:35 xunzhen 阅读(263) 评论(0) 推荐(0)
摘要:"题目蓝链" Solution 首先,很显然这题是要用莫队来处理的。我们先把输入的数字另外排一下序,然后记录一下$p_i$表示每一个数字对应在排好序的数列里面是排第几个。询问的时候要把一个询问拆成$3$个询问,然后再并起来。然后在莫队的时候记录$cnt_i$表示当前数字$i$出现的次数,再开一个$b 阅读全文
posted @ 2018-09-21 13:49 xunzhen 阅读(233) 评论(0) 推荐(0)
摘要:"题目蓝链" Solution 这道题有一个很巧妙的性质,那就是所有的状态都是由三个两两差距相等的点转移过来的。所以我们一开始只需要把两边的点往中间转移,如果最后转移到一个状态,那么就有解 现在我们考虑怎么快速转移。我们设当前的两两差距为$(a, b)$,我们有两种转移方法,$(a b, b)$或$ 阅读全文
posted @ 2018-09-20 21:11 xunzhen 阅读(161) 评论(0) 推荐(1)
摘要:"题目蓝链" Solution 这道题我们可以先开一颗线段树来维护一下每一个角色距离升级还需的经验,这棵线段树只需要支持查询区间的$min$就可以了。如果当前区间的$min$小于$0$,就说明当前的区间存在角色需要升级,我们就直接暴力递归子树,把所有该升级的角色升级。对于单点修改操作,我们就直接单独 阅读全文
posted @ 2018-09-19 22:16 xunzhen 阅读(150) 评论(0) 推荐(0)
摘要:"题目蓝链" Solution 首先要预处理出每一个位置的上一个与当前位置的数相同的位置,然后就可以利用它求出$pos[i]$,表示以第$i$个数为结尾的最长完美序列的起始位置。然后就可以求出每一个位置往前最多可以选多少个数,我们用RMQ来维护一下这个东西 询问的时候,由于$pos$单调不降,直接在 阅读全文
posted @ 2018-09-19 09:26 xunzhen 阅读(304) 评论(0) 推荐(0)
摘要:~~一些瞎扯~~ 又开了一个新的博客,主要原因是原先的 "博客" 太卡了,不方便随时查阅 所以我开了一个比较稳定的博客,会把一些好的题目进行归纳总结 之后我会陆陆续续的把之前写的博客转过来。也没有什么多说的,总之,希望自己越来越好吧 阅读全文
posted @ 2018-09-13 23:54 xunzhen 阅读(168) 评论(0) 推荐(0)