摘要: 长链剖分优化DP 长链剖分 有一些美妙的性质 一个点跳到根最多经过\(\sqrt n\)条链 向上跳链,链长一定会增加,最坏是\(1,2,3,...,\sqrt n\) 所有长链的总链长相加为n(如说) 优化DP 如果dp中有一维和深度有关,就考虑优化,考虑用长儿子\(O(1)\)转移(一般是平移, 阅读全文
posted @ 2024-02-22 20:58 zhy_learn 阅读(117) 评论(0) 推荐(0)
摘要: 6273. 欠钱 带权并查集维护深度 int find(int x){ if(fa[x]==x) return x; int dad=find(fa[x]); dep[x]+=dep[fa[x]],fa[x]=dad; return dad; } 初始深度为0,连接中的儿子设为1 原理是还未更新时深 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(63) 评论(0) 推荐(0)
摘要: USACO 2023 US Open Contest, Silver Problem 2. Field Day 题目大意: 给定n个01串(长度小于18),求对于每个串,与其他串的对应位不同的最大值 题解: 有部分分len<=10,得到启示,\(2^{len}·2^{len}\)非常合理 然后,就是 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(19) 评论(0) 推荐(0)
摘要: P8026 [ONTAK2015] Bajtocja 题目描述 给定 d 张无向图,每张图都有 n 个点。一开始,在任何一张图中都没有任何边。接下来有 m 次操作,每次操作会给出 a,b,k,意为在第 k 张图中的点 a 和点 b 之间添加一条无向边。你需要在每次操作之后输出有序数对 (a,b) 的 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(39) 评论(0) 推荐(0)
摘要: P4606 [SDOI2018]战略游戏 一个感觉比较新颖的题目,搞了一周 题目大意: 给定一个图,q组询问,每组给定k个点,求图上有几个点,删去后能使这k个点不连通 题解: 首先考虑删掉的点一定为割点,然后本题极像虚树,就可以考虑建圆方树 然后,圆方树上的圆点,在两点路径上的,即为所求 于是乎把k 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(25) 评论(0) 推荐(0)
摘要: P4198 楼房重建 一道优秀线段树题 题目大意,有1至n个位置,每个位置有一个楼房,初始高度为0,高度为\(h_i\)的楼房可以抽象成端点为\((i,0),(i,h_i)\)的线段 你站在\((0,0)\),看到一栋楼的前提是\((0,0)\)与\((i,h_i)\)的连线不与任何线段相交 每次修 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(22) 评论(0) 推荐(0)
摘要: 6361. 【NOIP2019模拟2019.9.18】鲳数(pair) 题目大意 求l到r的逆序对和 题解 首先规定\(num_{up}[i]\)表示从高位到低位(n~i)组成的数,\(num_{low}[i]\)从低位到高位 (1~i)组成的数,a[i]表示第i位的数值 1~n是低位到高位 举个栗 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(32) 评论(0) 推荐(0)
摘要: 组队 每种合法的组队方法都可以由两个数L和R表示,其中L是队伍内所有的l的最大值,R是队伍内所有的r的最小值,并且队伍内所有的a都在[L,R]内 对于每一个人,对他来讲可行的L和R一定是li<=L<=ai,ai<=R<=ri 把每个人看成平面上一个矩形,横坐标范围是[li,ai],纵坐标范围是[ai 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(37) 评论(0) 推荐(0)
摘要: 题解中那个看似暴力的染色,实际上正确性显然,直接看75%的时间复杂度证明 然后还是直接看75分的部分 它的里面说是用set维护块的前驱后继,然后全网没有一篇这样的题解,似乎全世界就我一个用这个方法 于是想了一中午终于想到如何维护: 就是用set记录每一个块的最后一个的位置,由于是区间覆盖,不会有重叠 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(29) 评论(0) 推荐(0)
摘要: 6311. mobitel 给定一个 r 行 s 列的矩阵,每个格子里都有一个正整数。 问如果从左上角走到右下角,且每次只能向右或向下走到相邻格子,那么使得路径上所有数的乘积不小于 n 的路径有多少条? 对于 100% 的数据,1<=r,s<=300,1<=n<=10^6 ,矩阵中的数不超过10^6 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(155) 评论(0) 推荐(0)
摘要: 三元环计数 首先要对所有的无向边进行定向,对于任何一条边,从度数大的点连向度数小的点,如果度数相同,从编号小的点连向编号大的点 此时这张图是一个有向无环图 之后枚举每一个点u,然后将u的所有相邻的点都标记上“被u访问了”,然后再枚举u的相邻的点v,然后再枚举v的相邻的点w,如果w存在“被u访问了”的 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(98) 评论(0) 推荐(0)
摘要: 3373. Line、 通过简化状态,我们可以得到\(f_{i,j,a,b}\)表示到第i列,有j个空列,有a行为1,b行为10,n-a-b为100 技巧:注意特殊条件,如行的顺序与方案无关,还有一些原状态的值域很小的可以特殊处理(所以可以把多维合成n-1维,n为值域,如上题为3) 然后矩阵乘法,注 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(119) 评论(0) 推荐(0)
摘要: 二阶线性递推数列 \[a_i=pa_{i-1}+qa_{i-2} \]\[a_i-x_1a_{i-1}=x_2(a_{i-1}-x_1a_{i-2}) \]\[a_i-x_1a_{i-1}=x_2^{i-1}(a_1-x_1a_o) \]\[a_i=(x_1+x_2)a_{i-1}-x_1x_2a_ 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(166) 评论(0) 推荐(0)
摘要: 点分治 P3806 【模板】点分治1 直接从版题开始 题目大意是给定大小为n的树,给m个询问k,求树上是否有两点距离为k 首先点分治的本质:对于一个根节点,只有两种路径,过这个点的,和不过的 然后就先处理过这个点的,然后递归处理每个子树 这时注意,每次选树的重心,时间复杂度就可以达到稳定\(O(n\ 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(13) 评论(0) 推荐(0)
摘要: 当有形如\(f_i=min_{j=0}^{l(i)}f_j+w转移代价\) 我们就可以使用单调栈优化DP 为什么不用单调队列??? 当有形如\(f_i=min_{j=l(i)}^{i-1}f_j+w转移代价\) 我们就可以使用单调队列优化DP 至于为毛,就可以从它的工作原理上去分析 6305. 最小 阅读全文
posted @ 2024-02-22 20:50 zhy_learn 阅读(84) 评论(0) 推荐(0)
摘要: 目录FFT推荐博客大致流程复数运算DFT单位根(n等分)性质FFTIFFT递归版迭代版(蝴蝶变化) FFT 推荐博客 快速傅里叶变换(FFT)超详解 浅谈 FFT (终于懂一点了~~) 十分简明易懂的FFT(快速傅里叶变换) 题目链接:P3803 【模板】多项式乘法(FFT) 大致流程 系数表示法< 阅读全文
posted @ 2024-02-22 20:48 zhy_learn 阅读(21) 评论(0) 推荐(0)
摘要: 多项式全家桶 #include<bits/stdc++.h> #define Fu(i,a,b) for(register int i=a;i<=b;i++) #define Fd(i,a,b) for(int i=a;i>=b;i--) #define mod 998244353 using na 阅读全文
posted @ 2024-02-22 20:48 zhy_learn 阅读(21) 评论(0) 推荐(0)
摘要: 莫比乌斯反演 目录莫比乌斯反演反演公式&性质例题[HAOI2011]Problem bYY的GCD于神之怒加强版Crash的数字表格/JZPTAB[SDOI2014]数表 [SDOI2015]约数个数和 反演公式&性质 \[f(n)=\sum_{d|n}g(d)\\ g(n)=\sum_{d|n}\ 阅读全文
posted @ 2024-02-22 20:48 zhy_learn 阅读(24) 评论(0) 推荐(0)
摘要: 欧拉图(欧拉通路&欧拉回路) 定义 通过图中所有边恰好一次的通路称为欧拉通路。 通过图中所有边恰好一次的回路称为欧拉回路。 具有欧拉回路的无向图或有向图称为欧拉图。 具有欧拉通路但不具有欧拉回路的无向图或有向图称为半欧拉图。 有向图也可以有类似的定义。 非形式化地讲,欧拉图就是从任意一个点开始都可以 阅读全文
posted @ 2024-02-22 20:48 zhy_learn 阅读(832) 评论(0) 推荐(0)
摘要: 目录图论树LCA树链剖分树上启发式合并虚树树分治点分治(淀粉质)点分树Kruskal 重构树树分块联通性强连通分量缩点双连通分量割点和桥圆方树(广义圆方树)哈密顿图欧拉图定义判定性质寻找方法竞赛图兰道定理三元环计数找三元环三元环期望 图论 树 LCA 树链剖分,倍增 tarjan,欧拉序列转化为 R 阅读全文
posted @ 2024-02-22 20:47 zhy_learn 阅读(41) 评论(0) 推荐(0)
摘要: 圆方树(广义圆方树) 圆方树是个好东西 顾名思义,就是一颗只有圆点(原点)和方点的树 建立它的方法就是将点双中的点全部连向一个方点,然后剪完图后把原边给删掉 然后就会有一些非常奇妙的性质: 每条边连接一个圆点和方点 建出来的图是棵树 然后还有一个点双很奇gay的性质 点双上任意两点的简单路径并等于点 阅读全文
posted @ 2024-02-22 20:47 zhy_learn 阅读(69) 评论(0) 推荐(0)
摘要: 字符串 KMP \(p_i\)表示\(s_{1...i}\)的最长真前缀,真后缀(“真”即是不包括原串)相等 处理就很简单,每个i就判断能否更新i-1的答案,如不行就i变成\(p_{i-1}\)再处理 Fu(i,2,m+n+1){ int j=p[i-1]; while(j>0&&a[i]!=a[j 阅读全文
posted @ 2024-02-22 20:47 zhy_learn 阅读(13) 评论(0) 推荐(0)
摘要: NTT 好吧,本质上就是FFT,把单位根换成了原根(不是很理解但是就是记住就行) 优点 能取模,FFT的复数你给我来取个模 没有精度差,FFT浮点数的精度怎么也会出一点问题 由于均为整数操作(虽然取模多),NTT常数小,通常比一大堆浮点运算的FFT要快 缺点 多项式的系数都必须是整数 模数有限制,N 阅读全文
posted @ 2024-02-22 20:47 zhy_learn 阅读(27) 评论(0) 推荐(0)
摘要: 动态DP 最大子段和 考虑设\(f_i\)表示以i为结尾的最大子段和,\(g_i\)表示i以内的最大子段和 \[f_i=\max(f_{i-1}+a_i,a_i) \]\[g_i=\max(g_{i-1},f_i) \]然后非常容易将每个权值变成一个矩阵,然后每次修改就变成修改一个矩阵 用线段树维护 阅读全文
posted @ 2024-02-22 20:47 zhy_learn 阅读(27) 评论(0) 推荐(0)
摘要: ex矩阵树定理 当边带权时,图的拉普拉斯矩阵对角线为与其相连的边权和,\(i,j(i\neq j)\)则为\(i,j\)的边权\(\times(-1)\) 然后它的行列式即为树的方案树 行列式 把矩阵高斯消元后,得到上三角矩阵,主对角线的值的乘积即为行列式 初等变换 交换两行,行列式乘-1 将某行乘 阅读全文
posted @ 2024-02-22 19:39 zhy_learn 阅读(34) 评论(0) 推荐(0)
摘要: 模拟退火模板 #include<bits/stdc++.h> #define MAX_TIME 0.9//时间限制(s) #define Fu(i,a,b) for(register int i=(a);i<=(b);i++) using namespace std; double Rand(){ 阅读全文
posted @ 2024-02-22 19:39 zhy_learn 阅读(57) 评论(0) 推荐(0)
摘要: 普通莫队 形式¶ 假设\(n=m\),那么对于序列上的区间询问问题,如果从\([l,r]\) 的答案能够\(O(1)\) 扩展到 \([l-1,r]\) \([l+1,r]\) \([l,r-1]\) \([l,r+1]\)(即与\([l,r]\) 相邻的区间)的答案,那么可以在\(O(n\sqrt 阅读全文
posted @ 2024-02-22 19:39 zhy_learn 阅读(20) 评论(0) 推荐(0)