program bzoj1828;
const maxn=;
check=; type node=record
l,r,s,a:longint;
end; var t:array [..maxn*] of node;
a,b,c:array [..maxn] of longint;
n,m,i,ans,mini:longint; procedure swap(var x,y:longint);
begin
x:=x xor y;
y:=x xor y;
x:=x xor y;
end; procedure qsort(l,r:longint);
var i,j,mia,mib:longint;
begin
i:=l; j:=r;
mia:=a[(l+r) shr ]; mib:=b[(l+r) shr ];
while i<=j do
begin
while (b[i]<mib) or (b[i]=mib) and (a[i]<mia) do inc(i);
while (b[j]>mib) or (b[j]=mib) and (a[j]>mia) do dec(j);
if i<=j then
begin
swap(a[i],a[j]);
swap(b[i],b[j]);
inc(i);
dec(j);
end;
end;
if i<r then qsort(i,r);
if j>l then qsort(l,j);
end; function min(x,y:longint):longint;
begin
if x<y then exit(x)
else exit(y);
end; procedure build(l,r,i:longint);
var mid:longint;
begin
t[i].l:=l;
t[i].r:=r;
if l=r then
begin
t[i].s:=c[l];
exit;
end;
mid:=(l+r)>>;
build(l,mid,i<<);
build(mid+,r,i<<+);
t[i].s:=min(t[i<<].s,t[i<<+].s);
end; procedure pass(i,add:longint);
var lch,rch:longint;
begin
lch:=i shl ;
rch:=lch+;
inc(t[lch].s,add);
inc(t[rch].s,add);
inc(t[lch].a,add);
inc(t[rch].a,add);
t[i].a:=;
end; procedure change(l,r,add,i:longint);
var mid:longint;
begin
if (t[i].l=l)and(t[i].r=r) then
begin
inc(t[i].s,add);
inc(t[i].a,add);
exit;
end;
if t[i].a<> then pass(i,t[i].a);
mid:=(t[i].l+t[i].r)>>;
if r<=mid then change(l,r,add,i<<)
else
if l>mid then change(l,r,add,i<<+)
else
begin
change(l,mid,add,i<<);
change(mid+,r,add,i<<+);
end;
t[i].s:=min(t[i<<].s,t[i<<+].s);
end; function getans(l,r,i:longint):longint;
var mid,ans1,ans2:longint;
begin
if t[i].a<> then pass(i,t[i].a);
if (t[i].l=l)and(t[i].r=r) then exit(t[i].s);
ans1:=check;
ans2:=check;
mid:=(t[i].l+t[i].r)>>;
if r<=mid then ans1:=getans(l,r,i<<)
else
if l>mid then ans2:=getans(l,r,i<<+)
else
begin
ans1:=getans(l,mid,i<<);
ans2:=getans(mid+,r,i<<+);
end;
exit(min(ans1,ans2));
end; begin
read(n,m);
for i:= to n do read(c[i]);
build(,n,);
for i:= to m do read(a[i],b[i]);
sort(,m);
for i:= to m do
begin
mini:=getans(a[i],b[i],);
if mini> then
begin
inc(ans);
change(a[i],b[i],-,);
end;
end;
writeln(ans);
end.

BZOJ 1828的更多相关文章

  1. BZOJ 1828 [Usaco2010 Mar]balloc 农场分配(贪心+线段树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1828 [题目大意] 现在有一些线段[l,r]的需求需要满足,i位置最多允许a[i]条线 ...

  2. 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 ...

  3. bzoj 1828: [Usaco2010 Mar]balloc 农场分配【贪心+线段树】

    长得挺唬人的贪心,按照右端点排序,用最小值线段树的询问判断当前牛是否能放进去,能的话更新线段树,ans++ 来自https://www.cnblogs.com/rausen/p/4529245.htm ...

  4. bzoj usaco 金组水题题解(1)

    UPD:我真不是想骗访问量TAT..一开始没注意总长度写着写着网页崩了王仓(其实中午的时候就时常开始卡了= =)....损失了2h(幸好长一点的都单独开了一篇)....吓得赶紧分成两坨....TAT. ...

  5. USACO 刷题记录bzoj

    bzoj 1606: [Usaco2008 Dec]Hay For Sale 购买干草——背包 #include<cstdio> #include<cstring> #incl ...

  6. 【BZOJ】1828: [Usaco2010 Mar]balloc 农场分配(经典贪心)

    [算法]贪心+线段树 [题意]给定n个数字ci,m个区间[a,b](1<=a,b<=10^5),每个位置最多被ci个区间覆盖,求最多选择多少区间. 附加退化问题:全部ci=1,即求最多的不 ...

  7. 【BZOJ】1707: [Usaco2007 Nov]tanning分配防晒霜

    [算法]贪心扫描线(+堆) [题意]给定n头牛有区间[a,b],m个防晒霜值为ai,每个可以使用bi次,每次可以使包含它的区间涂到防晒霜,问最多被涂牛数. [题解] 参考:[bzoj1707]: [U ...

  8. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  9. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

随机推荐

  1. 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简单介绍

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版).今天是第四篇.我尽量每周四篇 1.4 MIPS32指令集架构简单介绍 本书设计的处理器遵循MIPS32 Release 1架构,所以 ...

  2. xcode UIView常用方法属性动画

    常见属性: @property(nonatomic,readonly) UIView *superview; 获得自己的父控件对象 @property(nonatomic,readonly,copy) ...

  3. .net mvc System.Web.Optimization 、System.Data.Entity.Infrastructure找不到

    在MVC4的开发中,如果在App_Start目录下BundleConfig.cs类没有找不到引用System.Web.Optimization,可以使用程序包管理控制台进行安装到使用的项目 打开 工具 ...

  4. jQuery 插件 flexslider 初步使用

    发现了个不错的 jQuery 幻灯片插件 flexslider,有 接近 3000 Star,应该说是很靠谱的,下面是简单使用教程. 引入代码 所有代码都可以在 flexlslider 的 Githu ...

  5. JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符

    // Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * ...

  6. java list基本用法

    List<E>([]内的内容可省略),与数组类似: 实例化:List[<数据类型>] list = new ArrayList[<数据类型>](); 获得集合内元素 ...

  7. MySql 日期字符串类型互转

    1.data_format 日期转字符串 select date_format(Now(), '%Y-%m-%d %H:%i'); 2.str_to_date 字符串转日期 select str_to ...

  8. 帝国cms7.0导航栏当前栏目显示不同样式

    以下代码演示帝国导航调用 栏目id为14.15.2.34的栏目内容.同时加入php语句,如果栏目显示为当前栏目,则变量<?=$on?> 显示为 an ,否则就显示为空 [e:loop={& ...

  9. 如何将windows版的vim界面语言(默认为中文)设置成英文

    用安装包安装windows版本的vim(下载地址:http://www.vim.org/download.php),vim会自动根据windows的语言设置vim的界面语言.如何将其改为英文呢? 在v ...

  10. java线程学习——汉堡销售问题

    汉堡店中有一个负责做汉堡的厨师,一个负责销售的营业员,用java线程表示他们的营业过程: 问题原型就是生产者与消费者的问题. 首先定义一个汉堡包箱子类与几个相关的变量类: public class H ...