dp:
揹包+
奇怪的線段覆蓋
優化(ln函式的結論)
二分:
搜尋:
圖的搜尋樹:
倒序求解:
結論題:
曼哈頓距離
曼哈頓距離 x 線段樹
mod
mod x 線段樹
字串
矩陣 x 期望
貪心 單調棧:
manacher:
–>線性篩
for (i=2;i<=n;i++) phi[prime[j] * i] = phi[i] *(prime[j]-1);
}}
–>線段樹
#include
#define mid ((l+r)>>1)
typedef long
long ll;
int n,m,op,ql,qr;
ll qd;
struct node t[100100
<< 2];
inline int read()
void down(int l,int r,int k)
void build(int l,int r,int k) ;
build(l,mid,k<<1); build(mid+1,r,k<<1|1);
t[k].sum = t[k<<1].sum + t[k<<1|1].sum;
}void add(int l,int r,int k,int l,int r,ll x) down(l,r,k);
if (r <= mid) add(l,mid,k<<1,l,r,x); else
if (l > mid) add(mid+1,r,k<<1|1,l,r,x);
else add(l,mid,k<<1,l,mid,x), add(mid+1,r,k<<1|1,mid+1,r,x);
t[k].sum = t[k<<1].sum + t[k<<1|1].sum;
}ll query(int l,int r,int k,int l,int r) down(l,r,k);
if (r <= mid) return query(l,mid,k<<1,l,r); else
if (l > mid) return query(mid+1,r,k<<1|1,l,r);
else
return query(l,mid,k<<1,l,mid) + query(mid+1,r,k<<1|1,mid+1,r);
}int main()
}
–>二分圖
#include
#include
#include
int n,m,i,q[1010],rt,t1,t2;
bool vis[1010];
std::vector u[1010];
bool f(int v) return false;
}int main()
for (i=1;i<=m;i++) if (memset(vis,0,sizeof(vis)) && !f(i)) break;
printf("%d\n",i - 1);
}
–>spfa
#include
#include
int n,m,s,i,dis[10010];
struct edge e[500500], *head[10010];
bool vis[10010];
std::queue
q;void spfa(int s)
}}int main() );
} spfa(s);
for (i=1;i<=n;i++) printf("%d ",dis[i]);
putchar('\n');
}
–>lca
inline
int lca(int a,int b)
return a;
}
主席樹 (考得到算我輸)
#include
#include
#define n 200100
#define mid ((l+r)>>1)
using namespace std;
int t,n,m,i,rt[n],tot,ans[n],a[n],rnk[n];
struct point tr[n << 4];
priority_queueint,int> > q;
inline int _new()
void add(int now,int old,int k,int l,int r)
int ask(int nowl,int nowr,int k,int l,int r)
int main()
for (i=1;i<=n;i++)
for (i=1;i<=n;i++) add(rt[i] = _new(),rt[i-1],rnk[i],1,n);
for (int l,r,k;m--;)
}}
noip複習 快速冪
最普通的二進位制拆分 define ll long long ll qpow ll a,ll n,ll p 底數變大了,直接做 a a 會爆longlong,需要用類似快速冪的方法做乘法 define ll long long ll mul ll a,ll n,ll p ll qpow ll a,l...
NOIP複習內容
考了幾天試,感覺noip的內容其實也挺雜的 主要還是以計數為主吧,容斥原理 組合數什麼的都要學好 概率期望是重點 斯特靈數 尤拉函式 擴充套件歐幾里得 其實我連逆元是什麼都不知道 線段樹 樹狀陣列比較常見,一定要學好 注意公式的化簡,然後還有一些單調資料結構。線段樹有空做一做gss系列吧 tarja...
noip複習 快速冪
最普通的二進位制拆分 define ll long long ll qpow ll a,ll n,ll p 底數變大了,直接做 a a 會爆longlong,需要用類似快速冪的方法做乘法 define ll long long ll mul ll a,ll n,ll p ll qpow ll a,l...