模板
常用模板
七九河开
这个作者很懒,什么都没留下…
展开
-
Count on a tree II SPOJ - COT2 (树上莫队)
题目https://vjudge.net/problem/SPOJ-COT2题意给你一颗树 若干次询问 每次问一条链上有多少不同的点思路树上莫队代码#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e5+100;vector<...原创 2019-10-25 21:05:05 · 200 阅读 · 0 评论 -
CDQ分治
题目https://vjudge.net/problem/Gym-100247K代码#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 2e5+10000;struct node{ int a,b,c,ans;}a[maxn],tmp[m...原创 2019-10-25 20:57:42 · 146 阅读 · 0 评论 -
P3806 【模板】点分治1
题目https://www.luogu.org/problemnew/show/P3806题意 模板题思路 模板题#include <bits/stdc++.h>using namespace std;const int inf = 10000000;const int maxn = 100010;int n,m;struct node{ int...原创 2019-05-16 19:08:55 · 281 阅读 · 1 评论 -
B-M (特征方程教程)模板
出处https://jhcloud.top/blog/?p=1271#include <bits/stdc++.h>using namespace std;typedef long long ll;#define rep(i,a,n)for(int i=a;i<n;i++)#define per(i,a,n)for(int i=n-1;i>=a;i--)...原创 2019-03-02 19:24:51 · 795 阅读 · 0 评论 -
Legacy CodeForces - 786B (线段树优化建边+)
题目https://cn.vjudge.net/problem/CodeForces-786B题意最短路思路建两棵树 入树和出树 入树每个结点向孩子建边 出树向父亲建边 每棵树的叶子结点不能相互到达 只能通过新建的边到达 即最短路#include <bits/stdc++.h>using namespace std;typedef long long ...原创 2019-05-06 16:20:38 · 286 阅读 · 0 评论 -
主席树
https://li-fish.github.io/2017/09/25/cjtk4cs55006x04c2h5mrfwpv/#include <cstdio>#include <vector>#include <algorithm>using namespace std;const int MAX = 112345;struct Node...原创 2019-04-22 19:34:58 · 111 阅读 · 0 评论 -
tarjan缩点
#include<iostream>#include<bits/stdc++.h>using namespace std;const int maxn=2e5+5;vector<int> v[maxn];int dfn[maxn];int low[maxn];int cnt=0;int vis[maxn]; //1表示在栈中stack<...原创 2019-04-17 19:35:15 · 244 阅读 · 1 评论 -
Magic FZU - 2280(字符串hash)
题目https://cn.vjudge.net/problem/FZU-2280题意给你n和字符串和权值,m次操作,1 x y 把x的权值该为y2 x 问有多少字符串后缀为x 并且权值小于等于x的权值思路字符串hash 然后暴力#include <iostream>#include <cstdio>#include <cstdli...原创 2018-02-03 11:23:04 · 252 阅读 · 0 评论 -
java大数
题目https://cn.vjudge.net/problem/FZU-2278https://cn.vjudge.net/problem/FZU-2281/*大数的加减运算不同于普通整数的加减乘除运算加—— a+b: a=a.add(b);减—— a-b: a=a.subtract(b); 乘—— a*b: a=a.multiply(b);除—— a/b: a=a.di...原创 2019-04-12 20:32:37 · 210 阅读 · 0 评论 -
线性基
题目https://cn.vjudge.net/problem/HYSBZ-2460题意给你某些数 让你选一些数 使他们异或值不为0 并且权值最大代码#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 10004;struct node{ ...原创 2019-04-02 16:35:57 · 99 阅读 · 0 评论 -
高斯消元
const int MAXN=50;int a[MAXN][MAXN];//增广矩阵int x[MAXN];//解集bool free_x[MAXN];//标记是否是不确定的变元inline int gcd(int a,int b){ int t; while(b!=0) { t=b; b=a%b; a=t; ...原创 2019-04-01 21:23:30 · 101 阅读 · 0 评论 -
奔小康赚大钱 HDU - 2255 (KM匹配)
题目https://cn.vjudge.net/problem/HDU-2255题意裸地km匹配思路#include <bits/stdc++.h>using namespace std;const int INF = 0x3f3f3f3f;int mp[330][330];int slack[330];int lx[330],ly[330];int ...原创 2019-03-12 18:04:37 · 131 阅读 · 0 评论 -
回文树模板
const int MAXN = 210005 ;const int N = 26 ;struct Palindromic_Tree { int next[MAXN][N] ;//next指针,next指针和字典树类似,指向的串为当前串两端加上同一个字符构成 int fail[MAXN] ;//fail指针,失配后跳转到fail指针指向的节点 long long c...原创 2019-02-20 15:01:03 · 212 阅读 · 0 评论 -
后缀数组模板
typedef long long ll;const int maxn = 200010;int cntA[maxn],cntB[maxn],sa[maxn],tsa[maxn],A[maxn],B[maxn],height[maxn];int Rank[maxn];ll n;char ch[maxn];void solve(){ for(int i = 0;i < ...原创 2019-02-16 10:07:11 · 162 阅读 · 0 评论 -
拓展KMP模板
const int N = 1e6 + 10;typedef long long ll;char s1[N],s2[N];int nex[N],extend[N];void get_next(char s[]){ int len = strlen(s); nex[0] = len; int mx = 0,id; for(int i = 1;i <...原创 2019-02-16 10:05:58 · 120 阅读 · 0 评论 -
强连通 Kosaraju
https://blog.csdn.net/zhouzi2018/article/details/81610804#include<iostream>#include<cstdio>#include<vector>#include<cstring>using namespace std;const int maxn=100;in...原创 2019-01-16 20:38:14 · 193 阅读 · 0 评论 -
强连通算法 Tarjan
https://www.cnblogs.com/1pha/articles/7818320.html只适用于有向图#include<stdio.h>//求一个图存在多少个强连通分量#include<string.h>#include<vector>#include<algorithm>using namespace std;#de...原创 2019-01-16 19:43:05 · 163 阅读 · 0 评论 -
Distance in Tree(点分治)
题目https://codeforces.com/problemset/problem/161/D题意给你n个点的树问相距为K的有多少对思路点分治模板#include <bits/stdc++.h>using namespace std;typedef long long ll;const int inf = 10000000;const int...原创 2019-05-24 21:06:22 · 334 阅读 · 0 评论 -
Charlie's Change POJ - 1787 (多重背包记录路径)
题目https://cn.vjudge.net/problem/POJ-1787题意裸地多重背包但要记录路径思路正常多重背包加个记录路径数组即可#include <algorithm>#include <iostream>#include<cstdio>#include <cstdlib>#include &l...原创 2019-05-21 20:22:39 · 245 阅读 · 0 评论 -
2-sat 模板
int dfn[maxn],low[maxn];int vis[maxn],col[maxn];int sta[maxn];int color,cnt,tot;int n,m;void tarjan(int u) //模板{ cnt++; dfn[u]=low[u]=cnt; vis[u]=1; sta[++tot]=u; for(int i...原创 2019-10-08 15:57:00 · 138 阅读 · 0 评论 -
二维凸包
#include<stdio.h>#include<math.h>#include<algorithm>#include<iostream>using namespace std;const int MAXN=1000;struct point{ int x,y;};point list[MAXN];int stac...原创 2019-09-27 16:21:35 · 100 阅读 · 0 评论 -
Counting Good Teams Gym - 101484K (高维前缀和)
题目https://vjudge.net/problem/Gym-101484K题意给你n个数 问有多少合法数对定义合法为 A||B > max(A,B)思路高位前缀和 看代码#include <bits/stdc++.h>using namespace std;typedef long long ll;int dp[(1<<...原创 2019-09-27 16:15:16 · 173 阅读 · 0 评论 -
Coprimes Gym - 101492C (bitset)
题目https://cn.vjudge.net/problem/Gym-101492C题意给你n个数 每次询问一个区间内是否存在互质的数思路记录i位置后面第一个与其互质的数的位置bitset对应每个素数出现的位置异或后即这些素数出现的位置 即都不互质再异或 即可得到互质的位置 bitset_Find_frist 查找第一个可行的位置代码#include &...原创 2019-08-22 08:37:13 · 186 阅读 · 0 评论 -
虚数模板
fish学长https://li-fish.github.io/2018/09/04/cjtk4cs8l008s04c2emfcercy/给一颗树,根为1,边有边权。m次询问,每次询问给出k个关键点,割边使得根与任意关键点不连通,求最小花费。#include <bits/stdc++.h>using namespace std;typedef long long ll...原创 2019-08-10 15:54:21 · 187 阅读 · 0 评论 -
01字典树
int tol; //节点个数 LL val[32*MAXN]; //点的值 int ch[32*MAXN][2]; //边的值 void init(){ //初始化 tol=1; ch[0][0]=ch[0][1]=0;} void insert(LL x){ //往 01字典树中插入 x int u=0; for(int i=32;i&...原创 2019-08-06 19:02:40 · 102 阅读 · 0 评论 -
支配树
入门版 (DAG图)洛谷P2597 [ZJOI2012]灾难https://www.luogu.org/problem/P2597给的图为DAG图 建反向图 通过反向图将有多个父亲的点 求所有父亲的LCA 将改点连在LCA上。#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+10;...原创 2019-08-01 16:07:33 · 454 阅读 · 0 评论 -
P2014 选课(树形背包)
题目https://www.luogu.org/problem/P2014题意在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习。现在有N门功课,每门课有个学分,每门课有一门或没有直接先修课(若课程a是课程b的先修课即只有学完了课程a,才能学习课程b)。一个学生要从这些课程里选择M门课程学习...原创 2019-07-31 21:07:14 · 135 阅读 · 0 评论 -
Miller-Rabin素数测试算法(快速判素数 )
复杂度 O(k*log3(n))代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int prime[10]={2,3,5,7,11,13,17,19,23,29};int Quick_Multiply(int a,int b,int c) ...原创 2019-07-31 20:30:45 · 499 阅读 · 0 评论 -
线性基
1 求n个数的异或最大值void get(ll x){ for(int i = Base;i >= 0;i--) { if(x>>(ll)i&1) { if(b[i]) x ^= b[i]; else { b[i...原创 2019-07-30 15:14:51 · 82 阅读 · 0 评论 -
斯坦纳树模板
出自lxw博客https://blog.csdn.net/qq_30358129/article/details/94589381给出n个点,然后给出m条双向边,边有边权。再给出一个大小为k的点集,求使得点集联通的最小花费。时间复杂度O(n*3^k + cE*2^k),其中c为spfa常数。#include <bits/stdc++.h>#define rep...原创 2019-07-03 21:18:33 · 214 阅读 · 0 评论 -
拉格朗日插值模板
#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef long long ll;const int N = 1100;//mod一定要是质数const int mod=9999991;int pv[N]; //前几项, 前面无效值用0占位int st=1,ed=1100; ...原创 2019-06-03 17:56:04 · 261 阅读 · 0 评论 -
AC自动机模板
Fishhttps://li-fish.github.io/2018/05/03/cjqx554na000h4kc2tzwwkk1o/#include <bits/stdc++.h>using namespace std;const int MAX = 250001;const int N = 1000010;const int SIGMA_SIZE = 26;...原创 2019-01-23 21:17:51 · 101 阅读 · 0 评论 -
FWT(模板)
来自zylhttps://dudulu.net/blog/?p=1705int rev=mod+1>>1;void FWT(ll a[],int n) //n必须为2的某次方{ for(int d=1; d<n; d<<=1) { for(int m=d<<1,i=0; i<n; i+=m) ...原创 2019-06-06 16:16:14 · 215 阅读 · 0 评论 -
FFT模板
fftconst double PI = acos(-1.0);struct Complex { double x,y; Complex(double _x = 0.0,double _y = 0.0) { x = _x; y = _y; } Complex operator - (const Comp...原创 2019-01-21 20:16:23 · 167 阅读 · 0 评论 -
Play with Chain HDU - 3487 (splay 模板)
题目 https://cn.vjudge.net/problem/HDU-3487学长博客 https://li-fish.github.io/2017/10/10/cjqx554n5000e4kc273whrifc/ https://li-fish.github.io/2017/10/09/cjqx554p800254kc293h5z3gc/题意 splay简...原创 2019-01-21 14:33:29 · 156 阅读 · 0 评论 -
Aragorn's Story HDU - 3966 (树链剖分 + 模板)
题目 https://cn.vjudge.net/problem/HDU-3966Fish_Li https://li-fish.github.io/2017/08/09/cjqx554pg002d4kc24xybxqqi/树链剖分 https://www.cnblogs.com/George1994/p/7821357.html题意裸地树链剖分思路模板题#inclu...原创 2019-01-17 15:03:39 · 217 阅读 · 0 评论 -
置换群定理 Pólya定理:
Pólya定理:在一个置换群G={a1,a2,a3……ak}中,设C(ak)是在置换ak的循环节个数,那么用m种颜色染图这n个对象,则不同的染色方案数为: int main(){ //用c种颜色给有n*n的格子的墙染色 用m墙围成房子 问不同的房子多少种 ll n,m,c,i,ans = 0,x; scanf("%lld%lld%lld",&...原创 2018-08-24 20:45:48 · 605 阅读 · 0 评论 -
二分法 模板
while(l+1<r) { mid = (l+r)>>1; if(ok(m)) l = m; else r = m; } if(ok(r)) printf("%d \n",r); else printf("%d \n",l);二分查找(百度百科)#include<iostr...原创 2018-08-28 20:02:21 · 388 阅读 · 0 评论 -
容斥模板
//判断1-n有多少个M个因子任一个的倍数int n,m,cnt;ll ans ,a[30];ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}void DFS(int cur,ll lcm,int id) {// 当前第几个因子 这些因子的最小共公倍数 当前总因子 lcm = a[cur]/gcd(a[cur],lcm...原创 2018-08-22 19:44:29 · 179 阅读 · 0 评论 -
数位DP 模板
int a[20];// 每一位的上限int dp[20][20]; //记忆化int dfs(int pos,int prev,int limit){// 当前第几位 数位条件 是否受上限 int i; if(pos==0) return 1; if(!limit&&dp[pos][prev] != -1) return dp[po...原创 2018-08-18 20:09:14 · 149 阅读 · 0 评论