摘要: ##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) 阅读全文
posted @ 2022-11-16 16:13 Diamondan 阅读(107) 评论(0) 推荐(0)
摘要: 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 阅读全文
posted @ 2022-11-16 15:45 Diamondan 阅读(21) 评论(0) 推荐(0)
摘要: ####可持久化线段树 可持久化数据结构总是可以保留每一个历史版本,并且支持操作的不可变特性 部分可持久化 所有版本都可以访问,但是只有最新版本可以修改 完全可持久化 所有版本都既可以访问又可以修改,支持将两个历史版本合并 主席树&可持久化线段树 主席树全称:可持久化权值线段树 函数式线段树:是指使 阅读全文
posted @ 2022-11-16 15:00 Diamondan 阅读(31) 评论(0) 推荐(0)
摘要: ##平衡树 平衡:左右子树高度差的绝对值<=1称为平衡 用途: 1、插入一个数x 2、删除一个数x 3、查询一个数x(其排名,其前驱后继) 4、查询排名为k的数x 5、快速合并与分裂 6、维护区间修改、查询、翻转 7、维护其它信息 0)AVL:最普通的平衡树,维护[高度],只要出现了不平衡的条件,就 阅读全文
posted @ 2022-11-16 14:57 Diamondan 阅读(69) 评论(0) 推荐(0)
摘要: ###Easy Maths ####排列组合: 剩余法 对等法 ####R进制整数表示: 除以基数R,取余,逆序写下 ####R进制小数表示: 乘以基数R,向下取整,顺序写下 ####反码补码原码: 反码=绝对值 负数符号位不动,其余按位取反 补码:正数不变,负数为其反码加一得到 ####逻辑运算( 阅读全文
posted @ 2022-11-16 14:47 Diamondan 阅读(44) 评论(0) 推荐(0)
摘要: ####常见的$DP$问题形式: 1.求某种选取方案可得的最大值、最小值 2.求某要求下的方案数 3.累计递推结果 4.数学公式、结论、期望、概率推到 5.由多部分可以组成的问题,多部分合成可得 6.背包问题及其变形 ####常见$DP$状态总结: 1.前$i$行的最大/最小值 2.第i行第j列之前 阅读全文
posted @ 2022-11-16 14:40 Diamondan 阅读(32) 评论(0) 推荐(0)
摘要: 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 阅读全文
posted @ 2022-11-16 14:37 Diamondan 阅读(31) 评论(0) 推荐(0)
摘要: ###求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 阅读全文
posted @ 2022-11-16 14:31 Diamondan 阅读(43) 评论(0) 推荐(0)
摘要: ###$Johnson$全源最短路: $n$个点$m$条边 $Johnson$全源最短路算法 主要解决负环问题的全源最短路径算法 #####主要思路: 1.$SPFA$判断负环,在跑$SPFA$之前建立一个[超级源点]标号为0 与每一个点之间都存在一条 长度为0的路径 跑$SPFA$记录[0]到每个 阅读全文
posted @ 2022-11-16 14:28 Diamondan 阅读(188) 评论(0) 推荐(1)
摘要: ###Manacher算法:最长回文串(以每个点为中心的回文串长度) 直接上代码 MY_Code: //22.10.8 Manacher顶级理解 #include<bits/stdc++.h> using namespace std; const int N=4e7; int pos,maxr;// 阅读全文
posted @ 2022-11-16 14:23 Diamondan 阅读(32) 评论(0) 推荐(0)
摘要: ###树状数组: 利用数组下标的二进制关系,构造一种类似于树形的结构,有点像一个变成树形的前缀和 可以实现单点修改、区间修改、区间查询等操作 2的整数n次幂的位置就是表示该位置及之前所有数之和 在2的整数n次幂上加上小于等于2的n次幂的2的k次幂的数,也表示2^n +1 ··· 2^n + 2^k区 阅读全文
posted @ 2022-11-16 14:22 Diamondan 阅读(18) 评论(0) 推荐(0)
摘要: ###分块算法: 一个块 [ ] 长度为N 分成 [ A ][ B ][ C ][ D ][ E ] 分成 根号N 个区间 其中有时会多出来一块长度非 根号N 的区间 E ,这一块比较特殊,不完整 令均匀长度的块长度为len,共有完整的块c个 1.对于区间查询[l,r] 1)如果l,r在同一个区块内 阅读全文
posted @ 2022-11-16 14:16 Diamondan 阅读(21) 评论(0) 推荐(0)
摘要: 1.二分查找/答案 可以采用随机化l与r的方式,提高一定效率,但不稳定 emm似乎来源于hehezhou? 2.nlogn的做法与nlogn^2做法近乎相同,nlogn^2=2nlogn,常数忽略,但大常数也会一定程度上影响效率,甚至被卡掉 3.P1966 [NOIP2013 提高组] 火柴排队 对 阅读全文
posted @ 2022-11-16 14:13 Diamondan 阅读(29) 评论(0) 推荐(0)
摘要: ####1.二进制 汉明权重(即二进制下1的个数) 算法极为easy: // 求 x 的汉明权重1 int popcount(int x) { //(lowbit版) int cnt = 0; while (x) { cnt++; x-=x&-x;(lowbit操作) } return cnt; } 阅读全文
posted @ 2022-11-16 14:09 Diamondan 阅读(83) 评论(0) 推荐(0)