洛谷 1937 [USACO10MAR]仓配置Barn Allocation
2024-08-25 22:05:10
【题解】
贪心。 把区间按照右端点从小到大排序,右端点相同的按照长度从小到大排序,然后按顺序考虑,能放就放下去。 维护能不能放下去用线段树即可。
#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 ;
}
最新文章
- Linus:C++是一种糟糕的语言
- BLAST套件
- java annotation
- Make Blog Beautiful
- ZMMR103-数据批量导入
- 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配
- js继承关系
- Longest common prefix | leetcode
- 如何解决升级WIN服务的时候,不暴力停止服务 达到升级的目的
- shell 脚本监控程序是否正在执行, 如果没有执行, 则自动启动该进程
- windows程序设计读书笔记3——字符显示2
- Angular JS 学习笔记(一)
- 前端项目部署之Grunt
- [PA 2014]Pakowanie
- python optparser模块
- 深度学习之PyTorch实战(1)——基础学习及搭建环境
- 文件替换(交互式)Replace
- yum安装失败:ublic key for **.rpm is not installed
- 20162314 《Program Design &; Data Structures》Learning Summary Of The Tenth Week
- 查询反模式 - GroupBy和HAVING的理解
热门文章
- 如何在linux 32位机器编译64位程序
- odb_sqlite_demo
- 2-3 Vue实例中的数据,事件和方法
- hdu4292 Food 最大流模板题
- bzoj 1044: [HAOI2008]木棍分割【二分+dp】
- P3573 [POI2014]RAJ-Rally
- Java实现日期时间对象的使用
- c#自定义ORM框架---(泛型&;反射&;实体类扩展属性<;附带通用增、删、查、改>;)
- QQ自动登录Demo源码(附全套WindowsApi)
- php可以定义数组的常量吗