BZOJ 1828: [Usaco2010 Mar]balloc 农场分配
Description

Input
第1行:两个用空格隔开的整数:N和M * 第2行到N+1行:第i+1行表示一个整数C_i * 第N+2到N+M+1行: 第i+N+1行表示2个整数 A_i和B_i
Output
* 第一行: 一个整数表示最多能够被满足的要求数
题解:
将请求按右端点排序,然后依次添加,用线段树判断是否能添加,不能的放弃。统计个数即可。
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
//by zrt
//problem:
using namespace std;
int minn[100005*4];
int mark[100005*4];
int c[100005];
void pd(int o){
if(mark[o]){
minn[o<<1]-=mark[o];
minn[o<<1|1]-=mark[o];
mark[o<<1]+=mark[o];
mark[o<<1|1]+=mark[o];
mark[o]=0;
}
}
void insert(int o,int l,int r,int L,int R){
if(l==L&&r==R){
mark[o]+=1;
minn[o]-=1;
return;
}else{
pd(o);
int m=(L+R)>>1;
if(r<=m) insert(o<<1,l,r,L,m);
else if(l>m) insert(o<<1|1,l,r,m+1,R);
else insert(o<<1,l,m,L,m),insert(o<<1|1,m+1,r,m+1,R);
minn[o]=min(minn[o<<1],minn[o<<1|1]);
}
}
void build(int o,int l,int r){
if(l==r){
minn[o]=c[l];
}else{
int m=(l+r)>>1;
build(o<<1,l,m);
build(o<<1|1,m+1,r);
minn[o]=min(minn[o<<1],minn[o<<1|1]);
}
}
bool ok;
void ask(int o,int l,int r,int L,int R){
if(l==L&&r==R) ok&=(minn[o]>0);
else{
pd(o);
int m=(L+R)>>1;
if(r<=m) ask(o<<1,l,r,L,m);
else if(l>m) ask(o<<1|1,l,r,m+1,R);
else ask(o<<1,l,m,L,m),ask(o<<1|1,m+1,r,m+1,R);
}
}
struct node{
int a,b;
}q[100005];
bool cmp(node a,node b){
return a.b<b.b;
}
int main(){
#ifdef LOCAL
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&c[i]);
}
for(int i=0;i<m;i++){
scanf("%d%d",&q[i].a,&q[i].b);
}
sort(q,q+m,cmp);
int ans=0;
build(1,1,n);
for(int i=0;i<m;i++){
ok=1;ask(1,q[i].a,q[i].b,1,n);
if(ok){
ans++;
insert(1,q[i].a,q[i].b,1,n);
}
}
printf("%d\n",ans);
return 0;
}
BZOJ 1828: [Usaco2010 Mar]balloc 农场分配的更多相关文章
- BZOJ 1828 [Usaco2010 Mar]balloc 农场分配(贪心+线段树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1828 [题目大意] 现在有一些线段[l,r]的需求需要满足,i位置最多允许a[i]条线 ...
- bzoj 1828: [Usaco2010 Mar]balloc 农场分配【贪心+线段树】
长得挺唬人的贪心,按照右端点排序,用最小值线段树的询问判断当前牛是否能放进去,能的话更新线段树,ans++ 来自https://www.cnblogs.com/rausen/p/4529245.htm ...
- 【BZOJ】1828: [Usaco2010 Mar]balloc 农场分配(经典贪心)
[算法]贪心+线段树 [题意]给定n个数字ci,m个区间[a,b](1<=a,b<=10^5),每个位置最多被ci个区间覆盖,求最多选择多少区间. 附加退化问题:全部ci=1,即求最多的不 ...
- BZOJ_1828_[Usaco2010 Mar]balloc 农场分配_线段树
BZOJ_1828_[Usaco2010 Mar]balloc 农场分配_线段树 Description Input 第1行:两个用空格隔开的整数:N和M * 第2行到N+1行:第i+1行表示一个整数 ...
- BZOJ1828 [Usaco2010 Mar]balloc 农场分配
直接贪心,我们把线段按照右端点从小到大排序,然后一个个尝试插入即可... 来证明贪心的正确性: 不妨设贪心得到的答案集合为$S$,最优解的答案集合为$T$ 若$S$不是最优解,那么$S \not= T ...
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会 树形DP
[Usaco2010 Mar]gather 奶牛大集会 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1 ...
- 【树形DP/搜索】BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会
1827: [Usaco2010 Mar]gather 奶牛大集会 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 793 Solved: 354[Sub ...
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会( dp + dfs )
选取任意一个点为root , size[ x ] 表示以 x 为根的子树的奶牛数 , dp一次计算出size[ ] && 选 root 为集会地点的不方便程度 . 考虑集会地点由 x ...
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会
Description Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1<=N<=100,0 ...
随机推荐
- Default route and zero route
A default route of a computer that is participating in computer networking is the packet forwarding ...
- 转:Oracle EBS FND User Info API
转自:http://www.cnblogs.com/quanweiru/p/3775635.html 1. 与用户信息相关API PKG. --和用户处理有关的API FND_USER_PKG; -- ...
- 远程之SSH
SSH(Secure Shell的缩写),由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远 ...
- Android 使用定时器在指定日期及时间执行任务
public class MainActivity extends Activity { private Handler handler = new Handler(){ @Override publ ...
- 关于MD5校验和java工程下的校验
File file = new File("cos_code2003.bin"); System.out.println(file.length()); byte[] data = ...
- 【转】【SQLServer】SQL事务用法begin tran,commit tran和rollback tran的用法
Sql Server 2005/2008中提供了begin tran,commit tran和rollback tran来使用事务.begin tran表示开始事务, commit tran表示提交事 ...
- Oracle初始化
/*第1步:创建临时表空间 */ create temporary tablespace mdb_temp tempfile 'G:\data\oracle\mdb_temp.ora' size 10 ...
- swift-03-数据类型转换
// main.swift // 05-数据类型的转换 // // Created by wanghy on 15/8/9. // Copyright (c) 2015年 wanghy. Al ...
- SDL实现限制帧速
很多人都在SDL_PollEvent和SDL_WaitEvent之间纠结.前者会带来更好的帧数表现,但是CPU占用极大,可以直接吃掉一个核心.后者则基本不占用CPU,但是帧数会受到影响.有没有办法使两 ...
- Universal Naming Convention (UNC)
Quote from: http://compnetworking.about.com/od/windowsnetworking/g/unc-name.htm Definition: UNC is a ...