noip題目複習

2021-08-09 20:08:44 字數 2635 閱讀 4827

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...