1. program bzoj1828;
  2. const maxn=;
  3. check=;
  4.  
  5. type node=record
  6. l,r,s,a:longint;
  7. end;
  8.  
  9. var t:array [..maxn*] of node;
  10. a,b,c:array [..maxn] of longint;
  11. n,m,i,ans,mini:longint;
  12.  
  13. procedure swap(var x,y:longint);
  14. begin
  15. x:=x xor y;
  16. y:=x xor y;
  17. x:=x xor y;
  18. end;
  19.  
  20. procedure qsort(l,r:longint);
  21. var i,j,mia,mib:longint;
  22. begin
  23. i:=l; j:=r;
  24. mia:=a[(l+r) shr ]; mib:=b[(l+r) shr ];
  25. while i<=j do
  26. begin
  27. while (b[i]<mib) or (b[i]=mib) and (a[i]<mia) do inc(i);
  28. while (b[j]>mib) or (b[j]=mib) and (a[j]>mia) do dec(j);
  29. if i<=j then
  30. begin
  31. swap(a[i],a[j]);
  32. swap(b[i],b[j]);
  33. inc(i);
  34. dec(j);
  35. end;
  36. end;
  37. if i<r then qsort(i,r);
  38. if j>l then qsort(l,j);
  39. end;
  40.  
  41. function min(x,y:longint):longint;
  42. begin
  43. if x<y then exit(x)
  44. else exit(y);
  45. end;
  46.  
  47. procedure build(l,r,i:longint);
  48. var mid:longint;
  49. begin
  50. t[i].l:=l;
  51. t[i].r:=r;
  52. if l=r then
  53. begin
  54. t[i].s:=c[l];
  55. exit;
  56. end;
  57. mid:=(l+r)>>;
  58. build(l,mid,i<<);
  59. build(mid+,r,i<<+);
  60. t[i].s:=min(t[i<<].s,t[i<<+].s);
  61. end;
  62.  
  63. procedure pass(i,add:longint);
  64. var lch,rch:longint;
  65. begin
  66. lch:=i shl ;
  67. rch:=lch+;
  68. inc(t[lch].s,add);
  69. inc(t[rch].s,add);
  70. inc(t[lch].a,add);
  71. inc(t[rch].a,add);
  72. t[i].a:=;
  73. end;
  74.  
  75. procedure change(l,r,add,i:longint);
  76. var mid:longint;
  77. begin
  78. if (t[i].l=l)and(t[i].r=r) then
  79. begin
  80. inc(t[i].s,add);
  81. inc(t[i].a,add);
  82. exit;
  83. end;
  84. if t[i].a<> then pass(i,t[i].a);
  85. mid:=(t[i].l+t[i].r)>>;
  86. if r<=mid then change(l,r,add,i<<)
  87. else
  88. if l>mid then change(l,r,add,i<<+)
  89. else
  90. begin
  91. change(l,mid,add,i<<);
  92. change(mid+,r,add,i<<+);
  93. end;
  94. t[i].s:=min(t[i<<].s,t[i<<+].s);
  95. end;
  96.  
  97. function getans(l,r,i:longint):longint;
  98. var mid,ans1,ans2:longint;
  99. begin
  100. if t[i].a<> then pass(i,t[i].a);
  101. if (t[i].l=l)and(t[i].r=r) then exit(t[i].s);
  102. ans1:=check;
  103. ans2:=check;
  104. mid:=(t[i].l+t[i].r)>>;
  105. if r<=mid then ans1:=getans(l,r,i<<)
  106. else
  107. if l>mid then ans2:=getans(l,r,i<<+)
  108. else
  109. begin
  110. ans1:=getans(l,mid,i<<);
  111. ans2:=getans(mid+,r,i<<+);
  112. end;
  113. exit(min(ans1,ans2));
  114. end;
  115.  
  116. begin
  117. read(n,m);
  118. for i:= to n do read(c[i]);
  119. build(,n,);
  120. for i:= to m do read(a[i],b[i]);
  121. sort(,m);
  122. for i:= to m do
  123. begin
  124. mini:=getans(a[i],b[i],);
  125. if mini> then
  126. begin
  127. inc(ans);
  128. change(a[i],b[i],-,);
  129. end;
  130. end;
  131. writeln(ans);
  132. 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. C#复习一( Twenty Days)

      今天开始将要复习最近所学的一些C#知识.下面就来总结一下今天所复习的内容,以此来巩固我对C#知识的掌握.今天主要以举几个程序为例. 首先还是要注意代码的规范: –注释//,/**/,/// –骆驼 ...

  2. SQL函数经常用到的mark一下

    在项目开发过程中存储过程会用到很多SQL函数,经常用到的mark一下 1.经常用到的mark 一下 经常需要把id字符以','分隔传入存储过程然后SQL语句用in去搜索但是经常是这样的情况id 经常是 ...

  3. php 图片等比缩放

    /** * @method 图片等比缩放 * @param string $srcImage 源图片路径 * @param string $toFile 目标图片路径 * @param integer ...

  4. poj 3273 Monthly Expence 简单二分

    /** 大意: 有连续的n天,每一天有一定的花费,将其分成m份,每一份占一天或者连续的几天,求这m份中的最大值 思路: 二分其最大上限,看在此最大上线,能分成多少份,若大于m份,说明上限过小,需要扩大 ...

  5. iOS 表视图(UITableVIew)的使用方法(1)表视图的示例

    表视图继承自UIScrollView,所以有着大多UIScrollView的操作特性,诸如手指控制内容的滚动,内容视图到顶端或者低端时的自动反弹等.配合UINavigationController的导 ...

  6. PCB抄板评估需要关注的因素

    减少PCB抄板的反复是可能的,但这依赖于抄板前期工作的完成情况.多数时候,越是到产品抄板的后期越容易发现问题,更为痛苦的是要针对发现的问题进行更改.然而,尽管许多人都清楚这个经验法则,但实际情况却是另 ...

  7. CSS块级元素和行内元素

    根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display属性值为“block”,成为“块级 ...

  8. Ubuntu系统下在Eclipse中使用真实手机运行调试Android应用

    本文是在Ubuntu下已搭建好JRE+Eclipse+AndroidSDK的环境中进行的. 如果从未进行过如下的操作的话,在运行Android应用时,在设备选择器那里你的手机会显示为一大串" ...

  9. Linux下安装VNC Server

    操作系统centos6.5,在其之上安装vnc server,可利用windows上的vnc client远程登录. 1. 安装 yum install tigervnc-server.x86_64 ...

  10. windows XP 安装pip

    1.首先安装Python 2.添加环境变量 我的是 path = C:\Python27 3.下载setuptools 这里可参考这篇博文,附带资源的:http://blog.csdn.net/sud ...