【題解】Luogu P3740 [HAOI2014]貼海報
阿新 • • 發佈:2018-11-08
woc,今天已經是day -1了
再寫一顆珂朵莉樹來++rp吧
否則就要AFO了qaq
這有可能是我最後一篇題解/部落格qaq
原題傳送門:P3740 [HAOI2014]貼海報
考前刷水題到底是對還是錯qaq
反正這題是很水
前置芝士:珂朵莉樹
窩部落格裡對珂朵莉樹的介紹
沒什麼好說的自己看看吧
每貼一張海報暴力assign_val
最後用桶排思想統計一下即可
#pragma GCC optimize("O3") #include <bits/stdc++.h> #define IT set<node>::iterator using namespace std; inline int read() { int x=0,f=1; char c=getchar(); for(;!isdigit(c);c=getchar()) if(c=='-') f=-1; for(;isdigit(c);c=getchar()) x=x*10+c-'0'; return x*f; } struct node { int l,r; mutable int v; node(int L, int R=-1, int V=0):l(L), r(R), v(V) {} bool operator<(const node& o) const { return l < o.l; } }; set <node> s; IT split(int pos) { IT it = s.lower_bound(node(pos)); if (it != s.end() && it->l == pos) return it; --it; int L = it->l, R = it->r, V = it->v; s.erase(it); s.insert(node(L, pos-1, V)); return s.insert(node(pos, R, V)).first; } void assign_val(int l,int r,int val) { IT itr=split(r+1),itl=split(l); s.erase(itl,itr); s.insert(node(l,r,val)); } bool vis[1005]; int main() { int n=read(),m=read(); s.insert(node(1,n+5)); for(register int i=1;i<=m;++i) { int l=read(),r=read(); assign_val(l,r,i); } int res=0; IT itr=split(n+1),itl=split(1); for(;itl!=itr;++itl) if(!vis[itl->v]&&itl->v>=1&&itl->v<=m) { ++res; vis[itl->v]=true; } printf("%d",res); return 0; }
最後,我為眾大佬送上蒟蒻的祝福
#pragma GCC optimize("O2") #pragma GCC optimize("O3") #include <bits/stdc++.h> #define I_ak_ioi using namespace std; I_ak_ioi; struct NOIP{ int rp; int score; int rank; }NOIP2018; int main() { while(19260817) { ++NOIP2018.rp; NOIP2018.score=AK; NOIP2018.rank=1; } return 0; }