- 博客(13)
- 收藏
- 关注
原创 20200807 练习:字符串
T1 P3193 [HNOI2008]GT考试思路:设 fi,jf_{i,j}fi,j 表示有 iii 个号码,kmp 上匹配到第 jjj 位时的情况总数gi,jg_{i,j}gi,j 表示 kmp 上第 iii 个位置转移到第 jjj 个位置的总方案数有 dp 方程:fi,j=∑k=0mfi−1,k×gk,jf_{i,j}=\sum_{k=0}^{m} f_{i-1,k}\times g_{k,j}fi,j=k=0∑mfi−1,k×gk,j时间复杂度:O(n)O(n)O(n)
2020-08-07 22:42:23 226
原创 20200806 专题:manacher
总览:O(n)O(n)O(n) 找回文串Manacher算法本质上也是基于暴力匹配的方法,只不过做了一点简单的预处理,且在扩展时提供了加速Manacher 对字符串的预处理:在字符间添加符号,将偶回文串变成奇回文串在字符串首尾添加字符,防止越界基本概念:回文半径和回文直径:回文半径是包括回文中心在内的回文子串的一半的长度,回文直径则是回文半径的 2 倍减 **1 。最右回文边界:在遍历字符串时,每个字符遍历出的最长回文子串都会有个右边界,而R则是所有已知右边界中最靠右的位置,也就是说最右
2020-08-06 14:54:22 116
原创 20200805 SCOI模拟T3(字符串哈希+二分)
T3 P4324 [JSOI2016]扭动的回文串思路:发现拼接成的回文串中, 较长的回文串必有一段前(后)缀为回文串即必然是一段回文串和两段相同的字符串拼接于是可以先二分找回文串,再二分找拼接的串单独考虑上下相同的情况&&ab&&&&&&ba&&\&\&ab\&\&\&\\\&\&\&ba\&\&&&ab&
2020-08-06 00:14:06 103
原创 20200805 SCOI模拟T2(树哈希+换根dp)
T2 P4323 [JSOI2016]独特的树叶思路:考虑一种树哈希fx=1+∑y∈sonxfy×pr(szy)f_x=1+\sum_{y\in son_x} f_y\times pr(sz_y)fx=1+y∈sonx∑fy×pr(szy)其中 pr(i)pr(i)pr(i) 表示第 iii 个质数考虑处理出每个节点为根时的哈希值知道 xxx 为根时 x,yx,yx,y 的哈希值,求 yyy 为根时的哈希值yyy 子树的哈希值不变,考虑如何处理祖先的哈希值哈希值与深度无关,可以
2020-08-06 00:04:30 152
原创 20200805 SCOI模拟T1(分数规划)
T1 P4322 [JSOI2016]最佳团体思路:分数规划二分套路∑pi∑si≥mid∑(pi−si×mid)≥0\frac{\sum p_i}{\sum s_i}\geq mid\\\sum {(p_i-s_i\times mid)}\geq 0∑si∑pi≥mid∑(pi−si×mid)≥0然后每次将点值赋为 pi−si×midp_i-s_i\times midpi−si×mid做树上的背包问题求最大值注意卡常代码:#include <bits/stdc++.
2020-08-05 23:51:29 75
原创 20200804 专题:仙人掌(圆方树)
总览:无向仙人掌图的定义:任意一条边至多只出现在一条简单回路的无向连通图称为仙人掌。处理方法:建立圆方树圆方树的建点:原图中的点都是圆点对于每个点双连通分量,新建一个方点,这个方点和环上其它圆点连成菊花图对于不在环上的两个圆点,保留原图中的边根据仙人掌的性质,易证不存在相邻的两个方点边 (u,v)(u,v)(u,v) 权值的确定:若 u,vu,vu,v 都是圆点,则权值为原图中边权若 uuu 为方点,则权值为 vvv 到 uuu 父亲的最短路感性理解:对于图中每一个
2020-08-04 22:49:25 373 1
原创 20200803 SCOI模拟T1(数学问题)
思路:分类讨论a=1a=1a=1:总流量为奇数,显然不成立b=1b=1b=1:用一条流量为 1 的边将它变成一条流量为 1 的边n=2n=2n=2:讨论 a,ba,ba,b 的奇偶性即可n>2n>2n>2:最优情况必定是流量为 1 和 2 的各成一个环,通过一个点相连判断 a+b−1≥na+b-1\geq na+b−1≥n 即可代码:#include <bits/stdc++.h>using namespace std;namespace IO {c..
2020-08-04 00:19:53 102
原创 20200803 专题:LCT
总览:用 splay 动态维护树的信息支持加边断边,换根等操作可以维护连通性板子:struct LCT { int ch[2], f; int rev;} tr[A];#define ls(x) tr[x].ch[0]#define rs(x) tr[x].ch[1]inline int isroot(int x) { return ls(tr[x].f) != x && rs(tr[x].f) != x; }inline void pushup(int x)
2020-08-03 16:21:33 119
原创 20200731 SCOI模拟T2(分块套分块)
T1 铃铛计数问题思路:考虑对 l,rl,rl,r 进行分块预处理出每个节点的祖先在每个块中的数量,修改某点权值可以在 nnn\sqrt nnn 的时间内维护
2020-08-01 17:01:56 191
原创 20200728 SCOI模拟T2(状压dp)
T2 P6622 [省选联考 2020 A/B 卷] 信号传递思路:发现对答案产生影响的实质是边的经过次数 cnti,jcnt_{i,j}cnti,j令 iii 的位置为 posipos_iposi则一条边 i,ji,ji,j 对答案的贡献为{posj−posi(posi<posj)k(posi+posj)(posi>posj)\begin{cases}pos_j-pos_i(pos_i<pos_j)\\k(pos_i+pos_j)(pos_i>pos_j)\e
2020-08-01 16:38:30 105
原创 20200728 SCOI模拟T1(线段树上二分)
T1 P6619 [省选联考 2020 A/B 卷] 冰火战士思路:发现选择一个温度时,冰系的贡献时前缀和,火系的贡献是后缀和,答案为较小的贡献的两倍因为一个贡献单增,一个单减,肯定存在一个点双方贡献相等因为温度属于整数,所以最佳温度为这个点左右的最近温度对于一次询问,可以两次二分找到这两个温度因为要求最大的最佳温度,当零点右侧的点最佳时,可能存在更加右侧的点,最终结果一样,于是需要第三次二分维护前缀后缀和,可以用线段树时间复杂度:O(nlog2n)O(nlog^2n)O(nlog2n),不
2020-08-01 16:08:46 188
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人