传送门

解题思路

扫了一眼觉得是贪心+线段树,结果贪心的时候刚开始按区间长度排的序。。这还有82分,后来叉了自己,换成按右端点排序过了。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm> using namespace std;
const int MAXN = 100005; inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?0:1;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return f?x:-x;
} struct Data{
int l,r;
}data[MAXN]; int n,m,ans;
int lazy[MAXN<<2],Min[MAXN<<2]; inline void pushdown(int x){
lazy[x<<1]+=lazy[x];lazy[x<<1|1]+=lazy[x];
Min[x<<1]-=lazy[x];Min[x<<1|1]-=lazy[x];
lazy[x]=0;
} void build(int x,int l,int r){
if(l==r){
Min[x]=rd();
return;
}
int mid=l+r>>1;
build(x<<1,l,mid);build(x<<1|1,mid+1,r);
Min[x]=min(Min[x<<1],Min[x<<1|1]);
} int query(int x,int l,int r,int L,int R){
if(L<=l && r<=R) return Min[x];
int mid=l+r>>1,ret=0x3f3f3f3f;
if(lazy[x]) pushdown(x);
if(mid>=L) ret=min(ret,query(x<<1,l,mid,L,R));
if(mid<R) ret=min(ret,query(x<<1|1,mid+1,r,L,R));
return ret;
} void update(int x,int l,int r,int L,int R,int k){
if(L<=l && r<=R) {
Min[x]-=k;
lazy[x]+=k;
return;
}
int mid=l+r>>1;
if(lazy[x]) pushdown(x);
if(mid>=L) update(x<<1,l,mid,L,R,k);
if(mid<R) update(x<<1|1,mid+1,r,L,R,k);
Min[x]=min(Min[x<<1],Min[x<<1|1]);
} inline bool cmp(Data A,Data B){
if(A.r==B.r)
return A.l>B.l;
return A.r<B.r;
} int main(){
n=rd();m=rd();build(1,1,n);
for(register int i=1;i<=m;i++) data[i].l=rd(),data[i].r=rd();
sort(data+1,data+1+m,cmp);
for(register int i=1;i<=m;i++)
if(query(1,1,n,data[i].l,data[i].r)>0) {
ans++;
update(1,1,n,data[i].l,data[i].r,1);
}
cout<<ans<<endl;
return 0;
}

最新文章

  1. 《征服 C 指针》摘录6:解读 C 的声明
  2. VBA用户控件
  3. 【Git】标签管理
  4. 获取并设置ListView高度的方法
  5. [算法] 数据结构之AVL树
  6. 理解Linux启动过程
  7. 现代程序设计——homework-07
  8. win7环境下安装MongoDB
  9. java基础之路(二)上
  10. 想从事IT行业的你,一定看看这篇文章
  11. Linux audio驱动模型
  12. redis分片和哨兵
  13. 20162302 实验一《Java开发环境的熟悉》实验报告
  14. Mac终端开启代理
  15. Gradle 1.12用户指南翻译——第46章. Java 库发布插件
  16. Java多线程处理List数据
  17. python之路(十)-正则表达式
  18. C++ 函数模板基础知识
  19. vmware的centos 6虚拟机如何共享文件夹?
  20. 简单的字母全排列问题—递归法和STL法

热门文章

  1. CSRF spring mvc 跨站请求伪造防御(转)
  2. Python中else的用法
  3. 深入理解Java虚拟机(自动内存管理机制)
  4. day1-初识Python以及环境搭建
  5. poj3294Life Forms
  6. go的单引号、双引号、反引号的区别
  7. natapp出现Invalid Host header
  8. Joomla - K2组件(文章管理扩展)
  9. JS Math.sin() 与 Math.cos() 用法 (含圆上每个点的坐标)
  10. 修改cmd命令默认路径