10 2020 档案
摘要:点双 一个点为割点当且仅当: 非根节点无返祖边,即 dfnx≤lowv 根节点有两个儿子以上 所以不用开栈 void Tarjan(int x){ dfn[x] = low[x] = ++ tim; int sz = 0; for(int i = head[x]; i; i =
阅读全文
摘要:重复旋律五:S中本质不同的子串数量:\sum_{i = 1}^{sz}{len_i - len_{f_i}} 重复旋律六:如果节点u不包含子串S[1..i]\(,也就是不存在母串的某个前缀,那么满足\)|endpos(u)| = ∑|endpos(son(u))|,其中$son(
阅读全文
摘要:####1. 回文自动机PAM #####(B站上的讲解视频)[https://www.bilibili.com/video/av25326779?from=search&seid=16439865067541274096] #####(代码看这篇)[https://www.luogu.com.
阅读全文
摘要:题意 有一张由黑白点构成的网格图,给出一些黑点的坐标,求上下左右都有黑点(不必相邻)的白点数目与原来黑点数目之和。 一个说明 为什么原题面中永不终止的情况是不可能的? 对于每一个将会被染成黑色的白点,它的上方,下方,左边,右边(不必相邻)一定是都是有黑点的,而一个既不在所属列的两端,又不在所属行的两
阅读全文
摘要:题意 给出一个序列与若干个区间,求每一个区间内出现次数大于等于2的数的个数 算法 树状数组离线(连主席树都敢卡……) 思路 求出现次数的题,基本都是这个套路 e.g.Luogu1972 HH的项链 考虑对于区间l-r,每一种颜色只有倒数第二个对答案有影响(因为这是该颜色最晚可以被计入答案的位置,
阅读全文
摘要:细节狂魔题 **题意:**维护一个01序列,支持区间修改(全部变0或1),区间取反,区间求和,区间求最长1序列 做法 显然应该用线段树维护。 线段树需要维护:每段区间内0的数量,1的数量,最长1序列长度,最长0序列长度,从左端点开始的0/1序列长度,从右端点开始的$0/1
阅读全文
摘要:细节题 本文会把作者踩到的坑指出,以便您调试 思路 贪心+DFS染色,算法其实很好想,考虑哪些*点是必须被替换的: 通过观察,我们发现,一个$$点要被替换,当且仅当有一个包含它的2\times 2的矩阵中除它之外全是.\(点(当我们已经将其他需要替换的\)点替换掉时) **证明:**
阅读全文
摘要:题意 给一个长为 n 的序列,以及交换次数 k,每次可以在原先的序列 中任意交换两个数 交换后找一个最大子串和,输出其可能的最大值。 1 \leq n \leq 200; 1 \leq k \leq 10。 算法 暴力枚举+贪心 思路(心路历程) 拿到题第一下还想这最大字段和DP
阅读全文
摘要:这里给出一种构造方法及其证明 **方法:**考虑从k开始依次构造差值,即第一个与第二个相差k,第二个与第三个相差k-1。首先假设第一个数为1,因此我们要把1+k放在第二个,那么第三个数应该为1+k-(k - 1) = 2,第四个为2+(k - 3) = k - 1,第五个为$
阅读全文
摘要:贪心算法两句话 第一句话: 能往左倒就往左倒。 如同数学中“我们不妨设”一样,相信很好理解。这里只对第二句话稍作解释: 不能往左倒的尽量往右倒 这样为什么是对的呢? 我们可以分类讨论一下: 假设当前已经处理到第i个,且它不能往左倒,h_i表示树高,x_i表示位置。 若$x_{i + 1}
阅读全文
摘要:引入 RMQ问题: 给定一个长度为n的序列A_{1 - n},有q次询问,每次询问给出x,y,回答A_中的最大值(也可以是最小值,此处以最大值为例) 通常n,q \leq 100000。 利用倍增解决这类问题的算法叫做ST表。 ST表 对于序列A_{1-n},我们构造一个
阅读全文
摘要:fpjo Iris WRP Rothen Illusoins Martin Caojia hyxss CXQ
阅读全文
摘要:####1. 主席树: #####https://blog.csdn.net/ModestCoder_/article/details/90107874#t0 ####2. Splay: #####https://www.luogu.com.cn/blog/user19027/solution-p3
阅读全文
摘要:###题意 https://www.luogu.com.cn/problem/P4052 ###算法 AC自动机上的套路DP ###思路 正面处理困难,于是考虑容斥,求不合法的方案数。考虑使用AC自动机,则原问题转化为:求使这m个字符串都匹配不上的字符串的个数。所以,匹配过程中经过的点,其$fa
阅读全文
摘要:####KMP https://www.luogu.com.cn/paste/pe84glyj ####AC自动机 https://www.luogu.com.cn/paste/xelpee2u (持续更新中……)
阅读全文
摘要:###题意 给n个点,要求构造一张简单无向图,其中每个点入度都为3,若可以构造则输出边数与边(顺序随意),无法构造则输出Impossible ###算法 推理qwq ###思路 首先,整张图的度数和应为n\times3,而每连一条边度数和增加2,故n为奇数肯定不合法。另外
阅读全文
摘要:###题意 给出一张n (n\leq1000) 点m (m\leq2000) 边的有向图,要求判断负环,并升序输出可以到负环的点 (多组数据 T\leq125); ###算法 建反图 + SPFA判负环 + dfs染色 ###思路 当建完反图后,负环是不变的,原图上所有能到负
阅读全文
摘要:###题意 平面上有n(n\leq1000)个点,你的任务是让所有n个点联通。为此,你可以新建一些边,费用等于两个端点的欧几里得距离平方。另外还有q(q\leq8)个套餐可以购买,如果你购买了第i个套餐,该套餐中的所有结点将变得相互连接。第i个套餐的花费为C_i。 ###算法 最
阅读全文
摘要:这里只写Kruskal版本(太蒟了qwq) ###大致思路 首先求出最小生成树,我们枚举每条不在最小生成树上的边,并把这条边放到最小生成树上面,然后就一定会形成环,那么我们在这条环路中取出一条最长的路(除了新加入的那一条边)。最终我们得到的权值就是次小生成树的权值。 ###代码实现 #include
阅读全文