BZOJ1135: [POI2009]Lyz
2017-12-11 16:28
197 查看
似乎是hall定理的经典模型
贪心的想,对于人的任意一个集合,肯定编号是连续的l~r一段更容易使匹配不合法
写成柿子就是∑ri=lsi>(d+r−l+1)k
把l,r移项,令ci=si−k
柿子可以化为∑ri=lci>dk
用线段树维护序列里的最大连续子序列和判一下
code:
贪心的想,对于人的任意一个集合,肯定编号是连续的l~r一段更容易使匹配不合法
写成柿子就是∑ri=lsi>(d+r−l+1)k
把l,r移项,令ci=si−k
柿子可以化为∑ri=lci>dk
用线段树维护序列里的最大连续子序列和判一下
code:
#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<ctime> #include<bitset> #include<string> #include<vector> #include<cstdio> #include<cstdlib> #include<cstring> #include<climits> #include<complex> #include<iostream> #include<algorithm> #define ll long long using namespace std; inline void read(int &x) { char c; int f=1; while(!((c=getchar())>='0'&&c<='9')) if(c=='-') f=-f; x=c-'0'; while((c=getchar())>='0'&&c<='9') (x*=10)+=c-'0'; x*=f; } const int maxn = 210000; const int maxm = 510000; int n,N,m,K,d; ll a[maxn]; struct segment{ll ls,rs,sum,c;}seg[maxn<<2]; void pushup(const int x) { int lc=x<<1,rc=lc|1; seg[x].c=seg[lc].c+seg[rc].c; seg[x].sum=max(seg[lc].sum,seg[rc].sum); seg[x].sum=max(seg[x].sum,seg[lc].rs+seg[rc].ls); seg[x].ls=max(seg[lc].ls,seg[lc].c+seg[rc].ls); seg[x].rs=max(seg[rc].rs,seg[rc].c+seg[lc].rs); } void build(const int x,const int l,const int r) { if(l==r) { seg[x].c=seg[x].ls=seg[x].rs=seg[x].sum=a[l]; return; } int mid=l+r>>1; build(x<<1,l,mid); build(x<<1|1,mid+1,r); pushup(x); } int loc; void upd(const int x,const int l,const int r) { if(l==r) { seg[x].c=seg[x].ls=seg[x].rs=seg[x].sum=a[l]; return ; } int mid=l+r>>1; if(loc<=mid) upd(x<<1,l,mid); else upd(x<<1|1,mid+1,r); pushup(x); } int main() { read(n); read(m); read(K); read(d); for(int i=1;i<=n;i++) a[i]=-K; build(1,1,N=n-d); for(int i=1;i<=m;i++) { int ri,xi; read(ri); read(xi); a[ri]+=(ll)xi; loc=ri; upd(1,1,N); puts(seg[1].sum>(ll)K*d?"NIE":"TAK"); } return 0; }
相关文章推荐
- bzoj 1135: [POI2009]Lyz 线段树+Hall定理
- 【BZOJ】1135: [POI2009]Lyz
- BZOJ 1135 [POI2009]Lyz 线段树
- BZOJ1135: [POI2009]Lyz
- BZOJ1135 [POI2009]Lyz
- 【BZOJ1135】【POI2009】Lyz
- Hall定理(bzoj 1135: [POI2009]Lyz)
- 【BZOJ1135】[POI2009]Lyz 线段树
- BZOJ1135: [POI2009]Lyz
- BZOJ[1135][POI2009]Lyz 线段树
- BZOJ 1135 POI2009 Lyz 线段树+Hall定理
- BZOJ1135: [POI2009]Lyz
- 1135: [POI2009]Lyz
- BZOJ 1135: [POI2009]Lyz Hall定理 + 线段树
- 1135: [POI2009]Lyz (线段树)
- BZOJ 1135:[POI2009]Lyz 线段树 + HALL定理
- 【BZOJ】【P1135】【POI2009】【Lyz】【题解】【线段树+Hall定理】
- BZOJ 1137 POI2009 Wsp 岛屿 半平面交
- BZOJ1119: [POI2009]SLO
- [BZOJ 1115] [POI2009] 石子游戏Kam 【阶梯博弈】