
板子
文章平均质量分 61
yezzz.
这个作者很懒,什么都没留下…
展开
-
缩点 边双点双 板子
缩点 差分约束原创 2022-08-10 14:16:22 · 333 阅读 · 1 评论 -
SPFA判负环板题
SPFA判负环原创 2022-07-24 15:14:29 · 321 阅读 · 0 评论 -
E Falfa with Substring
FFT 容斥 板题原创 2022-07-24 15:03:42 · 504 阅读 · 2 评论 -
Game
莫队板子原创 2022-07-03 09:59:20 · 91 阅读 · 0 评论 -
FFT 板子
存个偷来的多项式板子,用过的都说好(赞)constexpr int P(998244353), G(3), L(1 << 18);inline void inc(int &x, int y) { x += y; if (x >= P) x -= P;}inline void dec(int &x, int y) { x -= y; if (x < 0) x += P;}inline int mod(LL x) { return x % P;原创 2022-04-05 14:58:01 · 471 阅读 · 0 评论 -
工作安排(反悔贪心板子题)
工作安排 - 题目 - Daimayuan Online Judge分析:贪心,将set当链表用从后往前考虑(这样先入队的就一直能到最后),碰到更小的时刻,就将之前入队的 能出的全出#include <bits/stdc++.h>#define int long long #define Pa pair<int,int> using namespace std;const int N=1e5+5;struct node { int d,p; bool原创 2022-03-14 21:01:09 · 1915 阅读 · 0 评论 -
状压DP入门记录
状压DPAcWing 1064. 小国王分析:状压 DPDPDP 入门题该题当中对国王冲突的处理,即 checkcheckcheck 的位运算处理是状压题型非常经典的操作f[i][j][state]f[i][j][state]f[i][j][state] 表示前 iii 行放置 jjj 个国王,且第 iii 行的放置状态为 statestatestate 的方案数ans=∑state=0f[i][j][state]ans=\sum_{state=0}^{}f[i][j][state原创 2021-11-07 19:29:11 · 133 阅读 · 0 评论 -
Appearance Analysis (map,字符串降维,暴力枚举,答案处理小技巧)
Appearance Analysis分析:让求有多少种不同的窗户,然后这个窗户是可以多次旋转的数据才 111111111,直接暴力判断即可考虑用 mapmapmap 来映射每一种窗户每一个窗户都是一个二维的字符串,将二维转换成一维,扔到 mapmapmap 里映射一下几个坑点:每种窗户经旋转后,总共会有四种状态,每种状态要 mapmapmap 映射注意:旋转之后,字符串的顺序一定要考虑清楚对答案的处理所有窗户跑一遍 mapmapmap 之后,单独考虑每个窗户,.原创 2021-10-26 21:15:07 · 140 阅读 · 0 评论 -
set重载排序的操作和应用题型
J. LRU分析见2021 ICPC 江西省 J. LRU (二分答案,stl大杂烩,map,set,queue)用 setsetset 维护 ddd 个互不相同的元素,添加新元素时,将最先入 setsetset 的元素丢弃因此,setsetset 要重载排序,就相当于之前解法的 queue+setqueue+setqueue+set 合并了#include <bits/stdc++.h>#define int long longusing namespace std;原创 2021-10-25 17:14:42 · 379 阅读 · 0 评论 -
CF1593 D2. Half of Same(set,清空数组优化小技巧)
D2. Half of Same分析 (solution one):暴力枚举所有可能约数即可约数最大为 2e62e62e6,O(n∗2e6)O(n*2e6)O(n∗2e6),刚好卡过去由于是多组数据,要多次清空数组,这里有个优化的小技巧,详见代码#include <bits/stdc++.h>using namespace std;const int N=2e6+5;int a[105];int vis[N],cnt[N];signed main(){原创 2021-10-22 10:40:24 · 213 阅读 · 0 评论 -
CF1586E Moment of Bloom(并查集重构树,链上结论)
E. Moment of Bloom分析:重构树 +++ 链上结论结论:若考虑在树上,去掉所有奇数边的次数为 sum/2sum/2sum/2(sum为奇数点的个数)对于一棵树来说,选取两个端点,这条链是唯一的每次操作就能去掉两个奇数点,因次 sumsumsum 还要除以二然后用并查集在图上跑一遍生成树,再遍历每一条链即可#include <bits/stdc++.h>using namespace std;const int N=1e6+5;int f[N]原创 2021-10-20 15:03:15 · 347 阅读 · 0 评论 -
A Simple Math Problem (莫比乌斯函数反演)
A Simple Math Problem分析:莫比乌斯函数反演∑i=1n∑j=1i[gcd(i,j)==1]f(j)=∑j=1n∑i=jnf(j)∑d∣(i,j)u(d)=∑d=1n∑j=1[nd]∑i=j[nd]f(j∗d)∗u[d]=∑d=1nu(d)∑j=1[nd]f(j∗d)∑i=j[nd]1=∑d=1nu(d)∑j=1[nd]f(j∗d)∗([nd]−j+1)\begin{aligned}&\sum_{i=1}^n\sum_{j=1}^i[gcd(i,j)==1]f(j).原创 2021-10-18 18:00:26 · 186 阅读 · 0 评论 -
hdu 7136 Jumping Monkey (并查集,重构树)
hdu 7136 Jumping Monkey分析:并查集+重构树可以想到 BFSBFSBFS 去遍历,每次从当前权值最大点出发跑一遍 BFSBFSBFS,经过的点的 dep++dep++dep++然后,便将权值最大点去掉,继续重复上一个操作但是,这样显然会 TTT(代码见下文)考虑如何优化?(从比赛开始到结束,也没想出怎么优化)nnn 遍 BFSBFSBFS ,过程有很多步是重复的如果这棵树以权值最大点为根,从上到下的权值是递减的,那答案就是每个节点的深度(这就很 niceni原创 2021-10-12 15:52:36 · 435 阅读 · 0 评论 -
多重背包单调队列优化详解
6. 多重背包问题 III - AcWing分析:最暴力的写法 O(NVS),4e11O(NVS),4e11O(NVS),4e11 , 显然会超时(这是 4. 多重背包问题 I - AcWing 的写法(见文末))本题要通过单调队列将时间复杂度优化到 O(NV)O(NV)O(NV), 优化掉一个 SSS为什么能这样优化,先看一下原始的状态转移方程:f[j]=max(f[j],f[j-v]+w,f[j-2v]+2w,...,f[j-sv]+sw)也就是说,f[j]是由f[0~j]状态原创 2021-10-08 22:10:27 · 683 阅读 · 2 评论 -
P1886 滑动窗口 /【模板】单调队列 (单调队列板子)
P1886 滑动窗口 /【模板】单调队列单调队列问题,最重要的两点1)维护队列元素的个数,如果不能继续入队,弹出队头元素(维护的队列元素个数,是题目要求的区间长度)2)维护队列的单调性,即:通过tail--,尾坐标前移,使得队首始终是当前最大或者当前最小 #include <bits/stdc++.h>using namespace std;const int N=1e6+5;int a[N];int q[N],p[N];signed main(){ int n,原创 2021-10-08 20:29:51 · 257 阅读 · 0 评论 -
杨氏矩阵 and 钩子公式
杨氏矩阵 and 钩子公式杨氏矩阵满足杨氏矩阵条件如果(i,j)没有元素,则它右边和上边的相邻格子也一定没有元素如果(i,j)有元素,则它右边和上边的相邻元素要么没有元素,要么有元素且比(i,j)大1~n所组成的杨氏矩阵的个数可以通过下面的递推式得到:F(1)=1,F(2)=2F(1)=1,F(2)=2F(1)=1,F(2)=2F(n)=F(n−1)+(n−1)F(n−2), (n>2)F(n)=F(n-1)+(n-1)F(n-2),\ (n>2)F(n)=F原创 2021-10-03 14:50:52 · 247 阅读 · 0 评论 -
最长公共子序列 (LCS,二分,巧妙转换)
P1439 【模板】最长公共子序列分析:DPDPDP 算法是 n2n^2n2,状态转移方程也比较好推,设 fn,mf_{n,m}fn,m表示 aaa 序列的前 nnn 位,bbb 序列的前 mmm 位的 LCSLCSLCS 长度,那么,fi,j={fi−1,j−1+1 (a[i]==b[j])max(fi−1,j ,fi,j−1) (继承)f_{i,j}= \begin{cases}f_{i-1,j-1}+1\ (a[i]==b[j]) \\\max(f_原创 2021-10-02 16:31:39 · 546 阅读 · 0 评论 -
P3978 [TJOI2015]概率论 (卡特兰数,打表)
P3978 [TJOI2015]概率论CatalanCatalanCatalan 数列适用的题型:括号匹配,有 nnn 个左括号与 nnn 个右括号,合法匹配的方案数nnn 个元素出栈入栈的合法序列的数量nnn 个结点的二叉树的形态数量nnn 边形划分为三角形的方案数n∗nn*nn∗n 的网格中从左下角到右上角的方案数分析:那么这题显然就是有关二叉树形态数量的问题让求的是叶子节点数的期望,设 fnf_nfn 表示具有 nnn 个节点的二叉树个数,gng_ngn 表示原创 2021-09-29 12:43:49 · 230 阅读 · 0 评论 -
P4981 父子 (Cayley公式)
P4981 父子分析:这题是 CayleyCayleyCayley 公式的板子题CayleyCayleyCayley 公式介绍:用来求这样一个问题的:问 nnn 个有标号点能组成多少棵不同的无根树ans=nn−2ans=n^{n-2}ans=nn−2再回到这题,这题显然是个有根树,寝室长为树根,nnn 个人便有 nnn 种情况故 ans=n∗nn−2ans=n*n^{n-2}ans=n∗nn−2#include <bits/stdc++.h>#define原创 2021-09-28 22:35:19 · 195 阅读 · 0 评论 -
P2532 [AHOI2012]树屋阶梯 (卡特兰数状态转移方程写法)
P2532 [AHOI2012]树屋阶梯分析:考虑以阶梯左下角那个点为第一个钢材的左下角,那么第一个钢材摆放情况便如下图(以 n=5n=5n=5 为例)对每种情况分别讨论,那么问题都被分成了两个子问题,设f[n]表示摆放高度为n的台阶的方法数,那么:f[5]=f[4]∗f[0]+f[3]∗f[1]+f[2]∗f[2]+f[1]∗f[3]+f[0]∗f[4]=∑x+y=5f[x]∗f[y] (f[0]=f[1]=1)f[5]=f[4]*f[0]+f[3]*f[1]+f[2]*f[原创 2021-09-28 22:17:05 · 299 阅读 · 1 评论 -
组合数的求法 (代码实现)
组合数的求法计算 Cnm mod pC_n^m \bmod pCnmmodp方法一:int fac[N], inv[N];void init(int n){ fac[0] = 1; for(int i=1;i<=n;i++) fac[i] = 1LL*fac[i-1]*i%mo; inv[0] = inv[1] = 1; for(int i=2;i<=n;i++) inv[i] = mo - 1LL*(mo/i)*inv[mo%i]%mo;原创 2021-09-27 21:13:35 · 872 阅读 · 0 评论 -
欧拉函数板子题
欧拉函数板子题 Visible Lattice Points分析:让求有多少对 (x,y)(x,y)(x,y) 使得 gcd(x,y)=1gcd(x,y)=1gcd(x,y)=1 , 现考虑有多少 xxx 与y互质 (x<y)(x<y)(x<y) , 即求 φ(y)\varphi(y)φ(y) , 总的:ans=3+2∑i=2nφ(i)ans=3+2\sum_{i=2}^n\varphi(i)ans=3+2∑i=2nφ(i) , 333 个单独拎出来是 (1,0)(0,1)(1,原创 2021-09-07 21:58:46 · 121 阅读 · 0 评论 -
1845 -- Sumdiv (poj.org)(乘法逆元,求约数之和)
乘法逆元板子题:1845 – Sumdiv (poj.org)题意:让求 aba^bab 的所有约数之和 modmodmod 9901分析:由算术基本定理的“约数”和推论,对 aaa 做质因数分解ans=(1+p1+p12+...+p1c1∗b)∗(1+p2+p22+...+p2cn∗b)∗...∗(1+pn+pn2+...+pncn∗b)mod 9901ans=(1+p_1+p_1^2+...+p_1^{c_1*b})*(1+p_2+p_2^2+...+p_2^{c_n*b})*原创 2021-09-07 21:53:36 · 112 阅读 · 0 评论 -
扩展欧几里得算法
扩展欧几里得算法The extended Euclidean algorithm is an algorithm to compute integers xxx and yyy such that ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b) , given aaa and bbb .扩欧是对辗转相除法做了一些扩展,缩写 exgcd()exgcd()exgcd()考虑辗转相除法递推到边界,b=0,a=gcdb=0,a=gcdb=0,a=gcd得到原创 2021-08-27 16:41:09 · 158 阅读 · 0 评论 -
3233 -- Matrix Power Series (poj.org) (矩阵快速幂,等比数列二分求解,构造矩阵)
3233 – Matrix Power Series (poj.org)矩阵快速幂+等比数列二分求解这题不能 define int long longdefine\ int \ long \ longdefine int long long , long longlong\ longlong long 类型取模运算要两次,会超时!!!,查错一小时才知道 …#include<cstdio>#incl原创 2021-08-26 20:28:40 · 170 阅读 · 0 评论 -
P2261 [CQOI2007]余数求和 (整除分块)
P2261 [CQOI2007]余数求和G(n,k)=∑i=1nk mod i=∑i=1n(k−i∗[ki])=nk−∑i=1ni∗[ki]\begin{aligned}G(n,k)&=\sum_{i=1}^nk\ mod \ i\\&=\sum_{i=1}^n(k-i*[\frac{k}{i}])\\&=nk-\sum_{i=1}^ni*[\frac{k}{i}]\end{aligned}G(n,k)=i=1∑nk mod原创 2021-08-26 09:36:28 · 155 阅读 · 0 评论 -
等比数列求和(递归)
递归求解等比为a的等比数列前n项和对n要分奇偶讨论#include <bits/stdc++.h>#define int long long using namespace std;int mo;int ksm(int a,int b,int p=mo){ int ans=1; while(b) { if(b&1) ans = ans*a%p; a=a*a%p; b >>= 1; }原创 2021-08-26 08:56:22 · 2998 阅读 · 0 评论 -
Aladdin and the Flying Carpet - LightOJ 1341 (唯一分解定理,快速求约数个数,快速求所有约数)
Aladdin and the Flying Carpet - LightOJ 1341分析:将面积 aaa 分解为 a=p1c1p2c2...prcra=p_1^{c_1}p_2^{c_2}...p_r^{c_r}a=p1c1p2c2...prcraaa 的约数个数为 ∏i−1r(ci+1)\prod_{i-1}^r(c_i+1)∏i−1r(ci+1) , 又因为约数是对称的,还要除以 222最后 ansansans 还要减去小于 bbb 的约数的个数至于不是方形原创 2021-08-24 16:35:08 · 126 阅读 · 0 评论 -
hdu 7088 卷业务模型分析 (三分)
hdu 7088 卷业务模型分析三分非正解,没有证明出 (mx−mn)(mx-mn)(mx−mn) 是严格先递减再递增的(杭电上是 AAA 了,应该是数据没有被卡到)分析:转换问题:将 ∣...∣<=10|...|<=10∣...∣<=10 转换成 (最大差值−最小差值)/2<=20(最大差值-最小差值)/2<=20(最大差值−最小差值)/2<=20k∈[−∞,+∞],(mx−mn)先递减再递增k\in[-\infty,+\infty],(mx-mn)先递减再原创 2021-08-22 16:13:10 · 198 阅读 · 0 评论 -
P4239 任意模数多项式乘法逆 (模板,MTT)
P4239 任意模数多项式乘法逆 #include <bits/stdc++.h>using namespace std;typedef long long ll;typedef long double lld;const int N=1e6+5, mo=1e9+7;struct MTT { struct cp { lld x,y; inline void init() { x=y=0; } cp operator原创 2021-08-20 20:21:58 · 204 阅读 · 0 评论 -
MTT板子 (任意模数NTT,任意模数多项式乘法)
MTT用了 555 次 FFTFFTFFTP4245 【模板】任意模数多项式乘法#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef long double lld;const int mo=998244353, N=1e6+5;struct MTT { struct cp { lld x,y; inline void init()原创 2021-08-20 20:04:21 · 347 阅读 · 0 评论 -
P4721 【模板】分治 FFT (多项式求逆板子,生成函数)
P4721 【模板】分治 FFT题意:给定序列 g1…n−1g_{1\dots n - 1}g1…n−1,求序列 f0…n−1f_{0\dots n - 1}f0…n−1。其中 fi=∑j=1ifi−jgjf_i=\sum_{j=1}^if_{i-j}g_jfi=∑j=1ifi−jgj ,边界为 f0=1f_0=1f0=1分析:若直接按照题目给的式子展开求和,O(n2)O(n^2)O(n2) ,会超时生成函数:fi=∑j=1ifi−jgjf_i=\sum_{j=1原创 2021-08-19 11:52:13 · 178 阅读 · 0 评论 -
P4721 【模板】分治 FFT(FFT,分治板子理解)
P4721 【模板】分治 FFT题意:给定序列 g1…n−1g_{1\dots n - 1}g1…n−1,求序列 f0…n−1f_{0\dots n - 1}f0…n−1。其中 fi=∑j=1ifi−jgjf_i=\sum_{j=1}^if_{i-j}g_jfi=∑j=1ifi−jgj ,边界为 f0=1f_0=1f0=1分析:若直接按照题目给的式子展开求和,O(n2)O(n^2)O(n2) ,会超时考虑分治:先将f_i展开来观察一下:f1=g1f0f_1=g_原创 2021-08-19 00:44:34 · 289 阅读 · 0 评论 -
中超9 hdu 7072 Boring data structure problem (双向队列,思路转换)
hdu 7072 Boring data structure problem题意:双向队列,逐个在队首或队尾添加元素,在这过程中也会删除队中的一些元素,每次 ′Q′'Q'′Q′ , 询问队列最中间 (mid)(mid)(mid) 的元素是哪个分析:双向队列的妙题(绝妙!)用双向队列 qlqlql 和 qrqrqr 分别来存左侧和右侧添的元素,每进行一次操作,都要重新维护两个队列,保证 qrqrqr的 队首为 midmidmid这题我觉得最妙的就是,这样处理下来,将要删除的元素在.原创 2021-08-18 22:22:55 · 230 阅读 · 0 评论 -
P4318 完全平方数 (莫比乌斯函数,二分,欧拉筛拓展)
P4318 完全平方数题意:求第 kkk 个既不是完全平方数也不是完全平方正整数倍的数分析:对于 111 个完全平方数 aaa 和它的倍数,将其表示成质因子的幂次的乘积形式:a=2x1∗3x2∗5x3∗...a=2^{x_1}* 3^{x_2}*5^{x_3} * ...a=2x1∗3x2∗5x3∗... 那么必然存在 111 个质因子的幂次 >1>1>1反过来讲,我们要求的即第 kkk 个所有质因子的指数都为 111 的数(是不是有点熟悉,想一想莫比乌斯函数)原创 2021-08-18 09:32:33 · 210 阅读 · 0 评论 -
中超8 hdu 7058 Ink on paper(prim最小生成树板子)
hdu 7058 Ink on paper题意:n个墨水点每秒向外扩展0.5cm问,所有点连起来的最小时间的平方分析:所有点连起来,即成一个连通图要求最小时间,即最后1点连上前n-1个点所成连通分量的时间考虑前n-1个点已经成了一个连通分量,第n个点连上连通分量的距离即为n个点生成最小生成树的最大边问题便转换成了求最小生成树最大边权,time2=(d2/0.5)2=d2{time}^2=(\frac{d}{2}/0.5)^2=d^2time2=(2d/0.5)2=d2 ,所以连根号都原创 2021-08-14 12:10:55 · 294 阅读 · 0 评论 -
中超8 hdu 7063 Square Card(计算几何,两圆交集面积,圆内正方形)
hdu 7063 Square Card题意:平面上有两个圆,一个圆得分,一个圆奖励现将一个边长为a的正方形扔到平面上,会绕得分圆的中心旋转若某一时刻,正方形严格处在圆里,将得分 or 奖励求同时得分和得奖励 与 得分的概率比分析:首先是要仔细读题,给我是读傻了然后,就是转换了要把概率比转换成面积比考虑一个正方形完全落入圆内,最极端的情况即两点在圆上,可求出正方形中心到圆心的距离 ra=r2−(a2)2−a2r_a=\sqrt{r^2-(\frac{a}{2})^2}-\f.原创 2021-08-13 20:30:29 · 246 阅读 · 0 评论 -
中超8 hdu 7064 Singing Superstar (字典树,不重合模式串)
2021“MINIEYE杯”中国大学生算法设计超级联赛(8)hdu 7064 Singing Superstar题意:一个主串nnn 个模式串求主串当中有多少没有重合的匹配串复盘:第一感觉是 kmpkmpkmp,单个模式串 O(n+m)O(n+m)O(n+m) , nnn 个模式串就要 O(n2)O(n^2)O(n2) 了,会超时又看了一遍输出的解释,发现 1≤∣ai∣≤301≤ |ai| ≤301≤∣ai∣≤30 ,模式串长度小于 303030,这就可以进行操作了枚举主串当中原创 2021-08-13 18:56:34 · 218 阅读 · 0 评论 -
P2000 拯救世界(生成函数,NTT加速高精乘)
P2000 拯救世界题意:101010 种用混沌之石的方法生成大阵,求 nnn 块神石能生成的大阵数量分析:生成函数板子题 +++ 快速高精乘( NTTNTTNTT 优化)下面列出十种神石的生成函数f(x)=1+x6+x12+x18+...=11−x6f(x)=1+x^6+x^12+x^18+...=\frac{1}{1-x^6}f(x)=1+x6+x12+x18+...=1−x61f(x)=1+x+x2+x3+...+x9=1−x101−xf(x)=1+x+x^2+x^3+原创 2021-08-13 11:53:56 · 186 阅读 · 2 评论 -
中超7 hdu 7047 Link with Balls (生成函数板子)
2021“MINIEYE杯”中国大学生算法设计超级联赛(7)hdu 7047 Link with Balls题意:(这个题面就离谱,看老半天)有 2n2n2n 个桶第 2x−12x-12x−1 个桶可以拿 kxkxkx 个球(k>=0k>=0k>=0)第 2x2x2x 个桶最多拿 xxx 个球求拿取 mmm 个球的方案数复盘:(赛时觉得是组合数学,但这变化是真的难以操作,赛后看了大佬的题解发现是还没学的生成函数的板子题)不会生成函数的先看这篇:这可能是最通俗原创 2021-08-13 11:00:58 · 213 阅读 · 2 评论