Pollard-rho(大整数质因子分解) vector<ll> fac;ll quick_mult(ll a, ll b, ll mod) { ll ans = 0; while(b) { if(b & 1) ans = (ans + a) % mod; a = (a + a) % mod; b >>= 1; } return ans;}ll quick_pow(ll a, ll n, ll mod) { ll ans =
dsu on tree(树上启发式合并) 需要合并子树信息时,暴力解法复杂度为O(n^2),dsu on tree可以做到将复杂度降低为O(nlogn)。主要思想:例题 现在有一棵树,每个节点涂有一个颜色。需要统计每颗子树上哪种颜色最多。算法流程:1. 另外写dfs找到各节点重儿子;2. 统计轻儿子信息,记录答案;3. 统计重儿子信息记录答案,并保留信息。4. 将轻儿子信息加入记录;5. 加入父节点信息,统计答案。int n;//size of treevector<int> tree[maxn];int colo
矩阵快速幂 const ll mod = 1e9+7;const int maxn = 1e3+5;ll a[maxn][maxn],b[maxn][maxn],c[maxn][maxn];void mulaa(int n){ memset(c,0,sizeof(c)); for(int ii=1;ii<=n;ii++){ for(int jj=1;jj<=n;jj++){ ll tp=0; for(int i=1;i<=n;i++){ tp+=((a[ii][i]%
后缀数组(求字符串后缀字母序大小排行) //时间复杂度O(nlogn)const int maxn = 1e6+5;int n,m,rk[maxn],tp[maxn],sa[maxn],num,tax[maxn];char s[maxn]; //字符串从1开始void Rsort(){ for(int i=0;i<=m;i++)tax[i]=0; for(int i=1;i<=n;i++)tax[rk[tp[i]]]++; for(int i=1;i<=m;i++)tax[i]+=tax[i
一维差分、二维差分 一维int a[maxn],b[maxn];void insert(int l,int r,int c) //[l,r]同时加c{ b[l]+=c; b[r+1]-=c;}二维int a[maxn][maxn], b[maxn][maxn];void insert(int x1,int y1,int x2,int y2,int c) //[x1,y1] - [x2,y2]同时加c{ b[x1][y1] += c; b[x1][y2+1] -=c; b[x
主席树(区间第k小) const int maxn = 2e5+5;int cnt;struct node{ int L, R;//分别指向左右子树 int sum;//该节点所管辖区间范围内数的个数 node(){ sum = 0; }}Tree[maxn * 20];int root[maxn];//多颗线段树的根节点void init() { cnt = 1; root[0] = 0; Tree[0].L = Tree[0].R = Tr
中国剩余定理 注意排除不可行的答案:ll exgcd(ll a,ll b,ll &x,ll &y) { if(b == 0) { x = 1,y = 0; return a; } else { ll res = exgcd(b,a%b,x,y); ll t = x; x = y; y = t - a / b * y; return res; }}ll excrt(ll m1,ll m2,ll a1,ll a2) { //m为余数 ll x,y,c,g; c =
排列组合模板C(m,n) const ll mod = 998244353;const ll maxn = 1e5+5;ll f[maxn],inv[maxn];ll qpow(ll a,ll b){ ll ans=1; while(b) { if(b&1)ans=ans*a%mod; a=a*a%mod; b>>=1; } return ans%mod;}void init(){ f[0]=inv[0]=1; for(ll i=1; i<maxn; i++) {
逆元 求解n关于m的逆元( n*x = 1 mod m );int exgcd(int a,int b,int &x,int &y){ if(b==0) { x=1,y=0; return a; } int r = exgcd(b,a%b,x,y); int t = x; x = y; y = t - a/b*y; return r;}int inv(int n,int m){
ST表(静态区间最值) int a[maxn];int maxsum[maxn][20],minsum[maxn][20];void RMQ(int num){ //共num个数 for(int i=1;i<=num;i++) maxsum[i][0] = minsum[i][0] = a[i]; for(int j=1;j<20;j++){ for(int i=1;i<=num;i++){ if(i+(1<<j)-1 &l
线段树(动态区间最值) const int inf = 0x7fffffff;const int maxn = 2e5 + 10;int a[maxn];int tree[maxn << 2], lz[maxn << 2];inline int max(int a, int b) { return a > b ? a : b; }void build(int i, int l, int r) { //建树操作,初始化时应将i置为1 if (l == r) { t
求单个整数质因数个数(无重复) 用于计算单个整数的质因数个数,无视重复的质因数。const int maxv = 2e7+5; //注意修改maxv数值int mind[maxv],val[maxv];void init(){ for(int i=1;i<maxv;i++) mind[i] = -1; mind[1] = 1; for(int i=2;i<maxv;i++){ if(mind[i] == -1){ for(int j=i;j<=maxv
并查集模板 int fa[maxn];int find(int x){ return x==fa[x]?x:fa[x]=find(fa[x]);}void unit(int u,int v){ int xx = find(u); int yy = find(v); if(xx != yy){ fa[xx] = yy; }}
codeforces #704 div2(4/5) A. Three swimmers先分别计算出对于a、b、c在你到达后,并且他们到达原点的时间。比如对于a,在你到达后他正好游完了a/p个来回,此时使用进一法,ta = (a+p-1)/p,即为你到达后a到达原点的时间.最后答案ans = min(ta,tb,tc);代码:#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<stri
线性筛模板(筛取从1-n的素数) 线性筛const int maxn = 1e5+5; //注意修改maxn数值int vis[maxn],prime[maxn],tol;void liner_shai(){ memset(vis,0,sizeof(vis)); for(int i=2;i<maxn;i++){ if(!vis[i]) prime[tol++] = i; for(int j=0;j<tol&&i*prime[j]<
ssm链接mysql时中文数据全部变为?的问题 这次的问题又坑了我几个小时,起因是我在做java后端时数据库内的中文数据全部变为了?。这里需要注意的是,在sping链接mysql时url后缀应该加上相应的编码形式。代码:jdbc.url=jdbc:mysql://xxx.x.x.x:xxxx/myblog?useUnicode=true&characterEncoding=UTF-8其中xxx.x.x.x:xxxx为服务器IP与端口号,myblog为将要链接的数据库名称。...
线段树模板 注意每次测试数据后的数据清空//单点修改为直接修改,区间修改为一起加某值struct Node{ int l,r; int lazy,sum;}Sum[MAXN<<2]; //树int num[MAXN]; //原数组(下标从1开始)void update(int index){ //区间和计算函数 Sum[index].sum = Sum[index<<1].sum+Sum[index<<1|1].sum;}void bu
maven分模块进行分层时载入配置文件需要注意的点 在maven分模块分成配置后进行发布后出现了controller层中的service无法自动注入的问题。排查后发现是service层和dao层的spring配置文件没有成功配置,在web层的web.xml中应注意:classpath:只会查找本模块中resources下的文件,而其他模块的不会进行查找.此时应将classpath:改为classpath*:classpath*:会自动去寻找本模块及依赖的jar包中的resources下的文件,这样才能正确配置service层和dao层的spring