【题解】

  贪心。 把区间按照右端点从小到大排序,右端点相同的按照长度从小到大排序,然后按顺序考虑,能放就放下去。 维护能不能放下去用线段树即可。

 #include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
#define rg register
#define N 100010
#define ls (u<<1)
#define rs (u<<1|1)
using namespace std;
int n,m,ans,mn[N<<],del[N<<];
struct seg{
int l,r;
}a[N];
inline int read(){
int k=,f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
return k*f;
}
void build(int u,int l,int r){
if(l<r){
int mid=(l+r)>>;
build(ls,l,mid),build(rs,mid+,r),mn[u]=min(mn[ls],mn[rs]);
}
else mn[u]=read();
}
inline void pushdown(int u){
mn[ls]+=del[u]; del[ls]+=del[u];
mn[rs]+=del[u]; del[rs]+=del[u];
del[u]=;
}
void update(int u,int l,int r,int ul,int ur){
if(ul<=l&&r<=ur){
mn[u]--; del[u]-=;
return;
}
int mid=(l+r)>>; pushdown(u);
if(ul<=mid) update(ls,l,mid,ul,ur);
if(ur>mid) update(rs,mid+,r,ul,ur);
mn[u]=min(mn[ls],mn[rs]);
}
int query(int u,int l,int r,int ul,int ur){
if(ul<=l&&r<=ur) return mn[u];
int mid=(l+r)>>,ret=2e9; pushdown(u);
if(ul<=mid) ret=min(ret,query(ls,l,mid,ul,ur));
if(ur>mid) ret=min(ret,query(rs,mid+,r,ul,ur));
return ret;
}
inline bool cmp(seg a,seg b){
if(a.r==b.r) return a.l>b.l;
return a.r<b.r;
}
int main(){
n=read(); m=read(); build(,,n);
for(rg int i=;i<=m;i++) a[i].l=read(),a[i].r=read();
sort(a+,a++m,cmp);
for(rg int i=;i<=m;i++){
int tmp=query(,,n,a[i].l,a[i].r);
if(tmp>){
ans++;
update(,,n,a[i].l,a[i].r);
}
}
printf("%d\n",ans);
return ;
}

最新文章

  1. Linus:C++是一种糟糕的语言
  2. BLAST套件
  3. java annotation
  4. Make Blog Beautiful
  5. ZMMR103-数据批量导入
  6. 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配
  7. js继承关系
  8. Longest common prefix | leetcode
  9. 如何解决升级WIN服务的时候,不暴力停止服务 达到升级的目的
  10. shell 脚本监控程序是否正在执行, 如果没有执行, 则自动启动该进程
  11. windows程序设计读书笔记3——字符显示2
  12. Angular JS 学习笔记(一)
  13. 前端项目部署之Grunt
  14. [PA 2014]Pakowanie
  15. python optparser模块
  16. 深度学习之PyTorch实战(1)——基础学习及搭建环境
  17. 文件替换(交互式)Replace
  18. yum安装失败:ublic key for **.rpm is not installed
  19. 20162314 《Program Design &amp; Data Structures》Learning Summary Of The Tenth Week
  20. 查询反模式 - GroupBy和HAVING的理解

热门文章

  1. 如何在linux 32位机器编译64位程序
  2. odb_sqlite_demo
  3. 2-3 Vue实例中的数据,事件和方法
  4. hdu4292 Food 最大流模板题
  5. bzoj 1044: [HAOI2008]木棍分割【二分+dp】
  6. P3573 [POI2014]RAJ-Rally
  7. Java实现日期时间对象的使用
  8. c#自定义ORM框架---(泛型&amp;反射&amp;实体类扩展属性&lt;附带通用增、删、查、改&gt;)
  9. QQ自动登录Demo源码(附全套WindowsApi)
  10. php可以定义数组的常量吗