标签:des style blog http color io os ar for
题解:
这种选区间的问题如果范围很大一定是贪心。。。
题解戳这里:
http://blog.163.com/fjxmlhx@126/blog/static/144072841201022521659527/
http://blog.csdn.net/sdj222555/article/details/13005815
知道做法以后就是码题了。。。
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #define N 100005 6 using namespace std; 7 inline int read() 8 { 9 int x=0;char ch=getchar(); 10 while(ch<‘0‘||ch>‘9‘)ch=getchar(); 11 while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();} 12 return x; 13 } 14 int n,m,ans; 15 struct data{int l,r;}a[N]; 16 struct seg{int l,r,mn,tag;}t[N*3]; 17 inline bool cmp(data a,data b) 18 {return a.r<b.r;} 19 void pushdown(int k) 20 { 21 int l=t[k].l,r=t[k].r,tag=t[k].tag; 22 if(l==r||!tag)return; 23 t[k].tag=0; 24 t[k<<1].mn-=tag;t[k<<1|1].mn-=tag; 25 t[k<<1].tag+=tag;t[k<<1|1].tag+=tag; 26 } 27 void build(int k,int l,int r) 28 { 29 t[k].l=l;t[k].r=r; 30 if(l==r){t[k].mn=read();return;} 31 int mid=(l+r)>>1; 32 build(k<<1,l,mid); 33 build(k<<1|1,mid+1,r); 34 t[k].mn=min(t[k<<1].mn,t[k<<1|1].mn); 35 } 36 bool ask(int k,int x,int y) 37 { 38 pushdown(k); 39 int l=t[k].l,r=t[k].r; 40 if(l==x&&y==r)return t[k].mn>=1; 41 int mid=(l+r)>>1; 42 if(mid>=y)return ask(k<<1,x,y); 43 else if(mid<x)return ask(k<<1|1,x,y); 44 else return (ask(k<<1,x,mid)&ask(k<<1|1,mid+1,y)); 45 t[k].mn=min(t[k<<1].mn,t[k<<1|1].mn); 46 } 47 void update(int k,int x,int y) 48 { 49 pushdown(k); 50 int l=t[k].l,r=t[k].r; 51 if(l==x&&y==r){t[k].tag++;t[k].mn--;return;} 52 int mid=(l+r)>>1; 53 if(mid>=y)update(k<<1,x,y); 54 else if(mid<x)update(k<<1|1,x,y); 55 else {update(k<<1,x,mid);update(k<<1|1,mid+1,y);} 56 t[k].mn=min(t[k<<1].mn,t[k<<1|1].mn); 57 } 58 int main() 59 { 60 n=read();m=read(); 61 build(1,1,n); 62 for(int i=1;i<=m;i++) 63 a[i].l=read(),a[i].r=read(); 64 sort(a+1,a+m+1,cmp); 65 for(int i=1;i<=m;i++) 66 if(ask(1,a[i].l,a[i].r)) 67 { 68 update(1,a[i].l,a[i].r); 69 ans++; 70 } 71 printf("%d",ans); 72 return 0; 73 }
BZOJ1828: [Usaco2010 Mar]balloc 农场分配
标签:des style blog http color io os ar for
原文地址:http://www.cnblogs.com/zyfzyf/p/4031577.html