12 2021 档案

摘要:传送门 限制里的「每对互相关联的边都是共起点的」很奇特 于是发现每个点间都是互相独立的,考虑维护 dpi 表示节点 i 向下的最大收益 于是发现 dpi=dpv×wiwi, wi{0,1} 于是可以用 阅读全文
posted @ 2021-12-26 21:11 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 是一个分层图网络流题 但是图全建出来会很大 发现每个时刻最多有四个点是有用的,所以其它点可以优化掉 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 1000010 #d 阅读全文
posted @ 2021-12-26 21:02 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 首先可以分块做 单调指针+桶排可以做到 O(nn) 然后第一问可以用线段树维护 关于一类标记合并线段树: 当每种操作都形如「区间加上一个数」或「区间对一个数取max」时,可以在每个节点维护两个标记 tag1tag2 若为叶子节点,则代表这个节点的实际 阅读全文
posted @ 2021-12-23 21:44 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 当出现形如「无向图上要求源汇点之间任意路径上只有一边被割的最小割」的限制时(确实不知道怎么抽象出模型了: 考虑一个最小割所形成的两个集合,观察样例可以发现一个割中的边有的是从S到T,有的是从T到S 而不满足题述条件的情况就是存在从T返回S的流,这样一条路径上会被割多次 于是不能存在这样的流, 阅读全文
posted @ 2021-12-23 21:31 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 采取启发式合并维护建出两棵树高为log的树 那么用其中一棵我们可以知道这个点最晚一次被置零是什么时候 用另一棵可以在每个节点上二分出在这一次置零之后的贡献 于是就做完了 点击查看代码 #include <bits/stdc++.h> using namespace std; #define 阅读全文
posted @ 2021-12-19 21:37 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 求前k大的另一种思路:降维 当题目要求区间/点对第k大时,考虑对每个左端点/点维护最大的右端点/另一个点 用一个堆维护每个左端点编号及其对应的权值 每次取出并删除取到最大值的决策点,并加入次大的,重复 k1 次即可 于是考虑对每个左端点维护所有右端点答案的最大值 发现暴力预处理左端 阅读全文
posted @ 2021-12-18 20:29 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 考场上看错题当成子串,建了棵后缀树然后复杂度炸了 对原串和反串分别建出trie树,即为求同时在两棵树的给定子树内的点权和 于是dfs一棵树,建出主席树查询另一棵树dfs序范围即可 题解有另一种做法: 首先我们把N个字符串按前缀的字典序排序。然后将这个顺序下N个字符串的后缀建成一棵可持久化ti 阅读全文
posted @ 2021-12-18 20:19 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:高维入侵 WC2016 论战捆竹竿 考场上看错题了,以为要求的是能形成的本质不同的字符串数,于是完全背包死活过不了样例 求的是能形成的不同长度数,可以联想到同余最短路 于是暴力的做法是求出所有boarder长度,O(n2logn) 跑同余最短路 但显然是过不去的,于是考虑优化 有一个 \( 阅读全文
posted @ 2021-12-14 14:04 Administrator-09 阅读(9) 评论(0) 推荐(0) 编辑
摘要:传送门 考试的时候以为切入点应该是在sam上维护不相交子串,于是不会做 写了个暴力还忘删调试了 其实这题只需要找到两个不相交的相同子串 维护出endpos集合中的最小值和最大值就可以了 点击查看代码 #include <bits/stdc++.h> using namespace std; #def 阅读全文
posted @ 2021-12-13 20:26 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 CF1063F 考场思路是将fail树加入sam形成的DAG中,这样一个串是另一个串的条件是可达另一个串 但复杂度是 O(n2n) 的 发现首先可以钦定选中的最短的串长度为1,且所有选中的串长度恰好相差1 于是考虑DP,令 dpi 为恰好以点 i 为起 阅读全文
posted @ 2021-12-13 20:22 Administrator-09 阅读(5) 评论(0) 推荐(0) 编辑
摘要:传送门 传说中的对联算法? 另一篇题解 当出现给定一些模式串和一些文本串,询问某几个模式串被匹配了多少次时: 建出AC自动机,建出fail树 在自动机上跑文本串,每到一个节点就在对应的dfs序上+1 处理询问时直接查子树区间和即可 貌似也可以在广义SAM上跑,线段树合并维护right集合,然后查在给 阅读全文
posted @ 2021-12-12 19:47 Administrator-09 阅读(9) 评论(0) 推荐(0) 编辑
摘要:传送门、 当题目是求所有点对之间操作的最值的时候记得随机点对+卡时 当题目是要求最值的时候记得随机决策点+卡时 首先放到广义SAM上,就变成了要求一棵树上 当前节点权值+当前节点子树内所有点对在另一棵树上lca的深度 的最大值 关于「当前节点子树内所有点对在另一棵树上lca的深度的最值」: 注意最值 阅读全文
posted @ 2021-12-12 19:19 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 最后一分钟才调出来,然后还不知道自己是在用假的暴力拍假的正解,于是就爆零了 发现 k 很小,所以每次修改只需要枚举左右加起来一共 8k 长的区间 剩下的区间的值除了特殊字符都是一样的 特殊字符的值是其他字符的值和 k2 取min 分块维护序列可以做到 阅读全文
posted @ 2021-12-12 19:07 Administrator-09 阅读(5) 评论(0) 推荐(0) 编辑
摘要:你们曾经有个学长啊,他叫 ICE……阅读全文 阅读全文
posted @ 2021-12-10 07:59 Administrator-09 阅读(42) 评论(0) 推荐(0) 编辑
摘要:传送门 尝试放到PAM上,跳fail的时候将判断改成等于,但炸了半个下午 手模后发现一旦有一个元素成为odd的子节点,它就可能无法被后面的偶长度反回文串考虑了 于是认为PAM做不了 但我傻了,PAM是可以做的 因为最终的串一定是偶长度的,所以我们可以强制不让odd有子节点 当跳完fail发现现在跳到 阅读全文
posted @ 2021-12-09 20:48 Administrator-09 阅读(10) 评论(0) 推荐(0) 编辑
摘要:一个字符串只有 O(n) 个本质不同的回文子串 证明:在Manacher算法中,只有 r 右移时才会产生新的回文子串(否则一定存在对称的回文子串) 而 r 右移不超过 n 次,故一个字符串只有 O(n) 个本质不同的回文子串 阅读全文
posted @ 2021-12-09 13:57 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:因为各位大佬的manacher板子实现上相差甚远 小蒟蒻整合了一个相对好写的板子以便日后贺复习 这里的回文半径 均为从位置 i 到回文串最右端位置包含的字符个数,也即包含位置i int n; char s[N], t[N], *c; int d[N], ans; scanf("%s", t) 阅读全文
posted @ 2021-12-09 08:54 Administrator-09 阅读(51) 评论(0) 推荐(0) 编辑
摘要:每个区间里有多少类数,以及每类数被多少区间包括 用莫队怎么做? 阅读全文
posted @ 2021-12-08 17:08 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 这世界上为什么会有如此毒瘤的题啊 所以有些计数题注意一下是不是每个非法序列都唯一对应一个合法子序列,也许可以借此DP 每个非法序列唯一对应一个长度为偶数的good subsequence 发现一个事情:令这个good subsequence的或为 s 则在剩下的序列中至多剩下一个数 阅读全文
posted @ 2021-12-08 06:59 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 发现 n=1,3 时先手必胜,尝试证明 n 为奇数时先手必胜 若存在一个数等于当前序列的异或和,则能一击必杀 否则若对手在这一步胜利当且仅当你们先后选的数 a,b 满足 ab=sum 因为有奇数个数,所以至少存在一个数不被包含在任何这样的数对 阅读全文
posted @ 2021-12-06 10:26 Administrator-09 阅读(5) 评论(0) 推荐(0) 编辑
摘要:传送门 首先将 ai 变成 aibi 发现如果不管 a1 的话,需要什么操作是可以预处理出来的 然后单独把 a1 弄成0,需要什么操作也是可以预处理出来的 要求最小化操作次数,发现这两部分中有一些在同一位置的恰好相反的操作是可以消掉的 注意一个事情,若 \ 阅读全文
posted @ 2021-12-05 15:15 Administrator-09 阅读(7) 评论(0) 推荐(0) 编辑
摘要:传送门 一开始读错题了以为给的是每一段的异或和 如果是异或和也能做 那就将所有段排序,若存在两段的左/右端点相同(如 [l,r1],[l,r2])就断成 [l,r1],[r1+1,r2] 于是按左端点从大到小枚举子段,树状数组查询区间异或和,若与给定不同就修改区间内的第一个 阅读全文
posted @ 2021-12-05 14:26 Administrator-09 阅读(7) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示