BZOJ1828[USACO 2010 Mar Gold 2.Barn Allocation]——贪心+线段树
题目描述

输入
输出
样例输入
1
3
2
1
3
1 3
2 5
2 3
4 5
样例输出
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
int l,r;
}s[100010];
int n,m,ans;
int a[100010];
int mi[400010];
int sign[400010];
void updata(int x)
{
mi[x]=min(mi[x<<1],mi[(x<<1)+1]);
}
void pushdown(int x,int l,int r)
{
if(sign[x])
{
mi[x<<1]+=sign[x];
sign[x<<1]+=sign[x];
mi[(x<<1)+1]+=sign[x];
sign[(x<<1)+1]+=sign[x];
sign[x]=0;
}
}
void build(int x,int l,int r)
{
int mid=(l+r)>>1;
if(l==r)
{
mi[x]=a[l];
return ;
}
build(x<<1,l,mid);
build((x<<1)+1,mid+1,r);
updata(x);
}
void change(int x,int l,int r,int L,int R,int v)
{
int mid=(l+r)>>1;
if(L<=l&&R>=r)
{
mi[x]+=v;
sign[x]+=v;
return ;
}
pushdown(x,l,r);
if(L<=mid)
{
change(x<<1,l,mid,L,R,v);
}
if(R>=mid+1)
{
change((x<<1)+1,mid+1,r,L,R,v);
}
updata(x);
}
bool cmp(node x,node y)
{
if(x.r!=y.r)
{
return x.r<y.r;
}
return x.l>y.l;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
build(1,1,n);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&s[i].l,&s[i].r);
}
sort(s+1,s+1+m,cmp);
for(int i=1;i<=m;i++)
{
change(1,1,n,s[i].l,s[i].r,-1);
if(mi[1]<0)
{
change(1,1,n,s[i].l,s[i].r,1);
}
else
{
ans++;
}
}
printf("%d",ans);
}
BZOJ1828[USACO 2010 Mar Gold 2.Barn Allocation]——贪心+线段树的更多相关文章
- BZOJ1827[USACO 2010 Mar Gold 1.Great Cow Gathering]——树形DP
题目描述 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1<=N<=100,000) 个农场 ...
- BZOJ1785[USACO 2010 Jan Gold 3.Cow Telephones]——贪心
题目描述 奶牛们建立了电话网络,这个网络可看作为是一棵无根树连接n(1 n 100,000)个节点,节点编号为1 .. n.每个节点可能是(电话交换机,或者电话机).每条电话线连接两个节点.第i条电话 ...
- 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 ...
- poj 2010 Moo University - Financial Aid (贪心+线段树)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 骗一下访问量.... 题意大概是:从c个中选出n个 ...
- [USACO 2012 Mar Gold] Large Banner
传送门:http://www.usaco.org/index.php?page=viewproblem2&cpid=127 又是一道这种题目,遇到一次跪一次,这次终于硬着头皮看懂了题解,但是谢 ...
- Usaco 2010 Dec Gold Exercise(奶牛健美操)
/*codevs 3279 二分+dfs贪心检验 堆版本 re一个 爆栈了*/ #include<cstdio> #include<queue> #include<cst ...
- BZOJ1782[USACO 2010 Feb Gold 3.Slowing down]——dfs+treap
题目描述 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1…N)从粮仓走向他的自己的牧场.牧场构成了一棵树,粮仓在1号牧场.恰好有N-1条道路直接连接着牧场, ...
- BZOJ1916[USACO 2010 Open Gold 2.Water Slides]——DP+记忆化搜索
题目描述 受到秘鲁的马丘比丘的新式水上乐园的启发,Farmer John决定也为奶牛们建 一个水上乐园.当然,它最大的亮点就是新奇巨大的水上冲浪.超级轨道包含 E (1 <= E <=15 ...
随机推荐
- Linux DNS原理简介及配置
Linux DNS原理简介及配置 DNS简介 DNS原理 域名解析的过程 资源记录 DNS BIND安装配置 一.简介 一般来讲域名比IP地址更加的有含义.也更容易记住,所以通常用户更习惯输入域名来访 ...
- at android.view.Surface.unlockCanvasAndPost(Native Method)
at android.view.Surface.unlockCanvasAndPost(Native Method) 在绘制动画特效的时候点击back键会报以上异常. 主要原因:当点击back按钮时A ...
- GridView控件中Checkbox实现单选
在GridView控件中,第0列有放一个CheckBox控件,现想实现对CheckBox进行单选. 先看看效果: 在ASPX页面,可以这样做: 有一点注意的是需要使用OnRowCreated事件. 在 ...
- [Oracle]GoldenGate官方文档
Extracting Data in Oracle GoldenGate Integrated Capture Mode http://www.oracle.com/technetwork/datab ...
- Intellij Idea 返回上次编辑快捷键设置
由于默认的返回上次编辑快捷键和和笔记本冲突. 需要从新设置快捷键. 找了好久终于找到了. 分别选中Back和Forward后设置新的快捷键即可
- 你真的了解volatile关键字吗?
volatile关键字经常在并发编程中使用,其特性是保证可见性以及有序性,但是关于volatile的使用仍然要小心,这需要明白volatile关键字的特性及实现的原理,这也是本篇文章的主要内容. 一. ...
- SNMP基础知识
注:本篇博客并非原创,仅是学习笔记 1. 概述1.1 诞生背景1.2 SNMP简介1.3 版本1.4 术语1.5 网络结构1.6 MIB简介2. Linux的SNMP安装 1. 概述 1.1 诞生背景 ...
- Oracle_安装说明
1.先到Oracle官网上下载11g oracle Database 11g 第 2 版 (11.2.0.1.0) 标准版.标准版 1 以及企业版 适用于 Microsoft Windows (x64 ...
- hadoop-mapreduce-(1)-统计单词数量
编写map程序 package com.cvicse.ump.hadoop.mapreduce.map; import java.io.IOException; import org.apache.h ...
- CF1016 D. Vasya And The Matrix
传送门 [http://codeforces.com/group/1EzrFFyOc0/contest/1016/problem/D] 题意 已知矩阵n行m列,以及每一行,每一列所有元素的异或,用 a ...