11 2022 档案
摘要:###哈哈哈希 ```cpp //一种好写且卡不掉的树哈希 //https://peehs-moorhsum.blog.uoj.ac/blog/7891 int hs(int x) { return x*x*x*1237123+19260817; } int h(int x) { int cur=h
阅读全文
摘要:结构体封装的trie 之前TLE了很多次 原因是因为cnt用完没清空... #include <bits/stdc++.h> #define il inline #define re register using namespace std; const int N=3e6+10; il int r
阅读全文
摘要:这题的代码很短,但是建模很有思维含量,好题,记录一下 ###题意: 给定n,q,表示一个数组长度为n(初始下标从1开始),初始时全为0 总共有q种操作,每个操作给定一个区间[l,r] 表示可以将这个区间[l,r]取反 问:经过若干次上述q种操作后,可以得到多少不同的序列,答案对998244353取模
阅读全文
摘要:###ST表 这个DS自从CSP-2022结束之后,每个星期都要打一次 还是记录一下比较好,写写自己的理解 作用:静态维护区间最大最小值 预处理:O(nlogn) 查询:O(1) 思想就是利用倍增预处理记录端点l开始往后2的幂倍之后对应幂的长度的区间最大值 令2的幂为k,对应区间[l,r]都可以从[
阅读全文
摘要:1.对于一道题如果思路不清晰,不妨把框架先打出来,再顺着框架解决问题 2.思路不清晰或者容易忘记推导过程,可以在注释里写一写思路和一些看出来的结论 3.该拼部分分拼部分分,即使过了拍也最好写一下数据点分治,也可以根据部分分剪剪枝,免得正解挂了部分分都拿不到。 4.空间大小一定要算清楚,既要避免用 S
阅读全文
摘要:###KMP算法 模式串p:就是需要寻找的那个串 文本串t:就是一个待与模式串p匹配的字符串 作用: 1.求出模式串p在文本串中出现的位置 2.求出模式串长度为i的前缀的最长的border(就是nxt[]数组,获取失配指针的数组) 算法思想: 充分利用模式串p,使得之前被匹配过的地方不再多匹配 观察
阅读全文
摘要:###字符串的前缀函数 概念 令字符串为s 令π[i]表示s的[0,i]区间内 真前缀s[0...k-1]和真后缀s[i-k+1...i]相等(不能重合!!!) 长度为k,若有多组,k取最大值,没有,k取0,k即为前缀函数π[i]的值 特别规定π[0]=0 例子 来源oi-wiki 举例来说,字符串
阅读全文
摘要:###P4516 [JSOI2018] 潜入行动 考虑DP dp[u][i][0/1][0/1]表示 以u为根的子树中共放了i个 ,是否放了监听装置,是否被监听到 1.dp[u][i][0][0]表示 以u为根的子树中共放了i个 没放监听装置 没被监听到 2.dp[u][i][0][1]表示 以u为
阅读全文
摘要:###最小瓶颈生成树 瓶颈生成树,即对于图 G 中的生成树树上最大的边权值在所有生成树中最小。 对于无向图来说,无向图的最小生成树一定是最小瓶颈生成树,但最小瓶颈生成树不一定是最小生成树。 因此,使用 Kruskal 算法即可求出无向图的最小瓶颈生成树。 这个算是之前的知识盲点吧,毕竟对MST认识还
阅读全文
摘要:神奇的题目 想了3个做法 假·贪心、真·DP、真·贪心 全部交上去 分别获得40、90、100的好成绩 蚌埠住了 1.假·贪心 考虑从孩子节点开始一直到指定的根节点u 到中途某个节点,信号强度不够用了,那么对应根节点u的放大器数+1 这样贪心是不对的,只有WA40分 因为选择某些节点可能会对于之后的
阅读全文
摘要:###闫式DP分析法 闫式DP分析法的核心思想是从集合的角度来分析DP问题。 所有的DP问题都可以使用闫式DP分析法进行分析。(经过70道题目验证通过) 1.选择DP问题:背包模型 2.序列DP问题 3.状态压缩问题 4.状态机问题 5.树形DP问题 6.区间DP问题 7.斜率优化问题 我们可以把做
阅读全文
摘要:###单调队列优化DP 先上 滑动窗口/单调队列模板 单调队列顾名思义,队列中的元素是具有单调性的 维护时需要队首l与队尾r移动来更新 超出范围的弹掉,要加入的加到自己该在的位置 具体实现看一下下面这组例子 先让需要维护的区间长度为k=3,维护每一个区块的最大值,deque的l到r,保持单调递减 原
阅读全文
摘要:###CF1183H Subsequences (hard version) 考虑dp计算本质不同方案数 dp[i][j]表示在前i个字符中,长度为j的本质不同的子串数 跑pre[i]表示de字母出现的上一个位置 pre数组我属实没有想到,看了题解之后觉得这个很妙 pre数组的作用是为了除去和原来本
阅读全文
摘要:##Meet in the middle 俗称折半搜索,将 m^n复杂度可降成 m^(n/2) ###1.luoguP5691 [NOI2001] 方程的解数 朴素算法的复杂度为m^n m=150,n=6 稳稳地超时 but采用Meet in the middle 就可以将复杂度降成m^(n/2)
阅读全文
摘要:https://www.luogu.com.cn/blog/virus2017/shuweidp 数位DP https://www.cnblogs.com/Phoenix41/p/12537234.html 组合数学选讲 https://www.xht37.com/my-oi/ noi Ag选手xh
阅读全文
摘要:####可持久化线段树 可持久化数据结构总是可以保留每一个历史版本,并且支持操作的不可变特性 部分可持久化 所有版本都可以访问,但是只有最新版本可以修改 完全可持久化 所有版本都既可以访问又可以修改,支持将两个历史版本合并 主席树&可持久化线段树 主席树全称:可持久化权值线段树 函数式线段树:是指使
阅读全文
摘要:##平衡树 平衡:左右子树高度差的绝对值<=1称为平衡 用途: 1、插入一个数x 2、删除一个数x 3、查询一个数x(其排名,其前驱后继) 4、查询排名为k的数x 5、快速合并与分裂 6、维护区间修改、查询、翻转 7、维护其它信息 0)AVL:最普通的平衡树,维护[高度],只要出现了不平衡的条件,就
阅读全文
摘要:###Easy Maths ####排列组合: 剩余法 对等法 ####R进制整数表示: 除以基数R,取余,逆序写下 ####R进制小数表示: 乘以基数R,向下取整,顺序写下 ####反码补码原码: 反码=绝对值 负数符号位不动,其余按位取反 补码:正数不变,负数为其反码加一得到 ####逻辑运算(
阅读全文
摘要:####常见的 问题形式: 1.求某种选取方案可得的最大值、最小值 2.求某要求下的方案数 3.累计递推结果 4.数学公式、结论、期望、概率推到 5.由多部分可以组成的问题,多部分合成可得 6.背包问题及其变形 ####常见 状态总结: 1.前 行的最大/最小值 2.第i行第j列之前
阅读全文
摘要:2022/11/1 https://codeforces.com/blog/entry/106346 On "is this greedy or DP", forcing and rubber bands reading other people's thought processes They l
阅读全文
摘要:###求LCA: //暴力 int n,m,root,fa[N],dep[N]; void dfs(int u,int fath){ fa[u]=fath; dep[u]=dep[fath]+1; for(int i=head[u];i;i=nxt[i]){ int v=to[i]; if(v==f
阅读全文
摘要:### 全源最短路: 个点 条边 全源最短路算法 主要解决负环问题的全源最短路径算法 #####主要思路: 1. 判断负环,在跑 之前建立一个[超级源点]标号为0 与每一个点之间都存在一条 长度为0的路径 跑 记录[0]到每个
阅读全文
摘要:###Manacher算法:最长回文串(以每个点为中心的回文串长度) 直接上代码 MY_Code: //22.10.8 Manacher顶级理解 #include<bits/stdc++.h> using namespace std; const int N=4e7; int pos,maxr;//
阅读全文
摘要:###树状数组: 利用数组下标的二进制关系,构造一种类似于树形的结构,有点像一个变成树形的前缀和 可以实现单点修改、区间修改、区间查询等操作 2的整数n次幂的位置就是表示该位置及之前所有数之和 在2的整数n次幂上加上小于等于2的n次幂的2的k次幂的数,也表示2^n +1 ··· 2^n + 2^k区
阅读全文
摘要:###分块算法: 一个块 [ ] 长度为N 分成 [ A ][ B ][ C ][ D ][ E ] 分成 根号N 个区间 其中有时会多出来一块长度非 根号N 的区间 E ,这一块比较特殊,不完整 令均匀长度的块长度为len,共有完整的块c个 1.对于区间查询[l,r] 1)如果l,r在同一个区块内
阅读全文
摘要:1.二分查找/答案 可以采用随机化l与r的方式,提高一定效率,但不稳定 emm似乎来源于hehezhou? 2.nlogn的做法与nlogn^2做法近乎相同,nlogn^2=2nlogn,常数忽略,但大常数也会一定程度上影响效率,甚至被卡掉 3.P1966 [NOIP2013 提高组] 火柴排队 对
阅读全文
摘要:####1.二进制 汉明权重(即二进制下1的个数) 算法极为easy: // 求 x 的汉明权重1 int popcount(int x) { //(lowbit版) int cnt = 0; while (x) { cnt++; x-=x&-x;(lowbit操作) } return cnt; }
阅读全文
摘要:##SG定理&SG函数 ###概念: ####必胜点N: 在此位必胜 ####必败点P: 在此位必输 更严谨的定义为: 无法移动的状态(即terminal-position)为P 可以移动到P的局面为N 所有移动都会进入N的局面为P ####性质: 1.所有终结点一定是[必败点P] 2.从任意[必胜
阅读全文
摘要:##可并堆之左偏树 (适用统计问题、最值问题、模拟问题和贪心问题) 一句话:符合堆、二叉树性质,且可实现快速合并 外节点:左儿子或右儿子为空的节点 (默认小根堆) dist: 一个外结点的dist为1 空节点的dist为0 非外结点的dist为到达其子树的[最近的外结点]的距离+1 左偏树[左偏]:
阅读全文