【Luogu1973】仓配置
来源:互联网 发布:php会员系统源码 编辑:程序博客网 时间:2024/04/30 21:28
【Luogu1973】仓配置
题面
直接找洛谷把。。。
题解
很明显的贪心吧
按照线段的右端点为第一关键字,左端点第二关键字排序
然后线段树维护区间最小就可以啦
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<set>#include<map>#include<vector>using namespace std;#define MAX 110000#define lson (now<<1)#define rson (now<<1|1)inline int read(){ int x=0,t=1;char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-')ch=getchar(); if(ch=='-')t=-1,ch=getchar(); while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar(); return x*t;}int t[MAX<<2];int ly[MAX<<2];int N,M,a[MAX];void pushdown(int now){ int lyy=ly[now]; t[lson]-=lyy;t[rson]-=lyy; ly[lson]+=lyy;ly[rson]+=lyy; ly[now]=0;}void putlazy(int now){ t[now]--;ly[now]++;}void build(int now,int l,int r){ if(l==r){t[now]=a[l];return;} int mid=(l+r)>>1; build(lson,l,mid);build(rson,mid+1,r); t[now]=min(t[lson],t[rson]);}int Query(int now,int l,int r,int al,int ar){ if(l==al&&r==ar)return t[now]; if(ly[now])pushdown(now); int mid=(l+r)>>1; if(ar<=mid)return Query(lson,l,mid,al,ar); else if(al>mid)return Query(rson,mid+1,r,al,ar); else return min(Query(lson,l,mid,al,mid),Query(rson,mid+1,r,mid+1,ar));}void Modify(int now,int l,int r,int al,int ar){ if(l==al&&r==ar){putlazy(now);return;} int mid=(l+r)>>1; if(ly[now])pushdown(now); if(ar<=mid)Modify(lson,l,mid,al,ar); else if(al>mid)Modify(rson,mid+1,r,al,ar); else {Modify(lson,l,mid,al,mid);Modify(rson,mid+1,r,mid+1,ar);} t[now]=min(t[lson],t[rson]);}struct Link{ int l,r;}gg[MAX];inline bool operator <(Link a,Link b){ if(a.r!=b.r)return a.r<b.r; return a.l>b.r;}int main(){ N=read();M=read(); for(int i=1;i<=N;++i)a[i]=read(); for(int i=1;i<=M;++i)gg[i].l=read(),gg[i].r=read(); sort(&gg[1],&gg[M+1]); build(1,1,N); int ans=0; for(int i=1;i<=M;++i) { int dd=Query(1,1,N,gg[i].l,gg[i].r); if(!dd)continue; ++ans; Modify(1,1,N,gg[i].l,gg[i].r); } cout<<ans<<endl; return 0;}
阅读全文
0 0
- 【Luogu1973】仓配置
- 配置
- 配置
- 配置
- 配置
- [配置]
- 配置
- 配置
- 配置
- 配置
- 配置
- 配置
- 配置
- 配置
- 配置
- 配置
- 配置
- 配置
- 【Leetcode 32.Longest Valid Parentheses】动态规划
- JavaScript及jQuery中的各种宽高属性图解
- hadoop入门之hosts-hostname-ip修改
- 跳转相机相册并进行裁剪
- Android单元测试(一):JUnit框架的使用
- 【Luogu1973】仓配置
- LeetCode566:reshape matrix 解答
- 函数的调用堆栈过程
- CXF客户端代码生成与服务调用(二)
- File类,列出当前指定路径下的所有内容,目录中包含的目录不关心,递归打破肘挚,学习
- [ Java Zero to One ] 1. Java String 之 基础概念
- 51nod1366 floyd
- 将bitmap转为File文件
- [ Java Zero to One ] 2. Java String 之 高级原理