传送门

解题思路

扫了一眼觉得是贪心+线段树,结果贪心的时候刚开始按区间长度排的序。。这还有82分,后来叉了自己,换成按右端点排序过了。

代码

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cmath>
  5. #include<algorithm>
  6. using namespace std;
  7. const int MAXN = 100005;
  8. inline int rd(){
  9. int x=0,f=1;char ch=getchar();
  10. while(!isdigit(ch)) {f=ch=='-'?0:1;ch=getchar();}
  11. while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
  12. return f?x:-x;
  13. }
  14. struct Data{
  15. int l,r;
  16. }data[MAXN];
  17. int n,m,ans;
  18. int lazy[MAXN<<2],Min[MAXN<<2];
  19. inline void pushdown(int x){
  20. lazy[x<<1]+=lazy[x];lazy[x<<1|1]+=lazy[x];
  21. Min[x<<1]-=lazy[x];Min[x<<1|1]-=lazy[x];
  22. lazy[x]=0;
  23. }
  24. void build(int x,int l,int r){
  25. if(l==r){
  26. Min[x]=rd();
  27. return;
  28. }
  29. int mid=l+r>>1;
  30. build(x<<1,l,mid);build(x<<1|1,mid+1,r);
  31. Min[x]=min(Min[x<<1],Min[x<<1|1]);
  32. }
  33. int query(int x,int l,int r,int L,int R){
  34. if(L<=l && r<=R) return Min[x];
  35. int mid=l+r>>1,ret=0x3f3f3f3f;
  36. if(lazy[x]) pushdown(x);
  37. if(mid>=L) ret=min(ret,query(x<<1,l,mid,L,R));
  38. if(mid<R) ret=min(ret,query(x<<1|1,mid+1,r,L,R));
  39. return ret;
  40. }
  41. void update(int x,int l,int r,int L,int R,int k){
  42. if(L<=l && r<=R) {
  43. Min[x]-=k;
  44. lazy[x]+=k;
  45. return;
  46. }
  47. int mid=l+r>>1;
  48. if(lazy[x]) pushdown(x);
  49. if(mid>=L) update(x<<1,l,mid,L,R,k);
  50. if(mid<R) update(x<<1|1,mid+1,r,L,R,k);
  51. Min[x]=min(Min[x<<1],Min[x<<1|1]);
  52. }
  53. inline bool cmp(Data A,Data B){
  54. if(A.r==B.r)
  55. return A.l>B.l;
  56. return A.r<B.r;
  57. }
  58. int main(){
  59. n=rd();m=rd();build(1,1,n);
  60. for(register int i=1;i<=m;i++) data[i].l=rd(),data[i].r=rd();
  61. sort(data+1,data+1+m,cmp);
  62. for(register int i=1;i<=m;i++)
  63. if(query(1,1,n,data[i].l,data[i].r)>0) {
  64. ans++;
  65. update(1,1,n,data[i].l,data[i].r,1);
  66. }
  67. cout<<ans<<endl;
  68. return 0;
  69. }

LUOGU P1937 [USACO10MAR]仓配置Barn Allocation的更多相关文章

  1. 洛谷P1937 [USACO10MAR]仓配置Barn Allocation

    题目描述 Farmer John recently opened up a new barn and is now accepting stall allocation requests from t ...

  2. AC日记——[USACO10MAR]仓配置Barn Allocation 洛谷 P1937

    [USACO10MAR]仓配置Barn Allocation 思路: 贪心+线段树维护: 代码: #include <bits/stdc++.h> using namespace std; ...

  3. 洛谷 1937 [USACO10MAR]仓配置Barn Allocation

    [题解] 贪心. 把区间按照右端点从小到大排序,右端点相同的按照长度从小到大排序,然后按顺序考虑,能放就放下去. 维护能不能放下去用线段树即可. #include<cstdio> #inc ...

  4. 【Luogu1973】仓配置(贪心,线段树)

    [Luogu1973]仓配置 题面 直接找洛谷把... 题解 很明显的贪心吧 按照线段的右端点为第一关键字,左端点第二关键字排序 然后线段树维护区间最小就可以啦 #include<iostrea ...

  5. 【Luogu1937】仓配置(贪心,线段树)

    [Luogu1937]仓配置 题面 直接找洛谷把... 题解 很明显的贪心吧 按照线段的右端点为第一关键字,左端点第二关键字排序 然后线段树维护区间最小就可以啦 #include<iostrea ...

  6. 【题解】Luogu p2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat 树型dp

    题目描述 Bessie is planning the annual Great Cow Gathering for cows all across the country and, of cours ...

  7. Maven私仓配置

    <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...

  8. BZOJ1828[USACO 2010 Mar Gold 2.Barn Allocation]——贪心+线段树

    题目描述 输入 第1行:两个用空格隔开的整数:N和M * 第2行到N+1行:第i+1行表示一个整数C_i * 第N+2到N+M+1行: 第i+N+1行表示2个整数 A_i和B_i 输出 * 第一行: ...

  9. LUOGU P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat…

    传送门 解题思路 首先第一遍dfs预处理出每个点的子树的siz,然后可以处理出放在根节点的答案,然后递推可得其他答案,递推方程 sum[u]=sum[x]-(val[i]*siz[u])+(siz[1 ...

随机推荐

  1. LUA中的冒号、点和self

    在Lua编程中,经常会看到有时用点号定义一个table的成员函数,有时却用冒号,在调用的时候也是如此.那么点号和冒号在使用上有什么区别呢?它们与self之间又是什么样的关系呢?稍安勿躁,接下来谜底将一 ...

  2. JavaScript特效源码(4、鼠标特效)

    1.鼠标感应--渐现特效 鼠标感应渐显图片[平时很模糊的图片鼠标一放上就显示清楚] [修改图片名称即可][共2步] ====1.将以下代码加入HTML的<head></head> ...

  3. Android开发 获取视频中的信息(例如预览图或视频时长) MediaMetadataRetriever媒体元数据检索器

    前言 在Android里获取视频的信息主要依靠MediaMetadataRetriever实现 获取最佳视频预览图 所谓的最佳就是MediaMetadataRetriever自己计算的 /** * 获 ...

  4. 使用了@Slf4j log没有info的方法 .info()方法爆红或者log爆红

    在springboot项目中,使用注解@Slf4j时,log变量不能用. 导包用的是 import lombok.extern.slf4j.Slf4j; <dependency> < ...

  5. SoapUI测试接口【转】

    下载安装soapUI工具,具体安装按照提示往下走就可以,这里不着重说明,下面是我打开soapUI工具的起始窗口:  在Projects上鼠标右键点击,选择new soap project(新建一个SO ...

  6. csps模拟67神炎皇,降雷皇,幻魔皇题解

    题面:https://www.cnblogs.com/Juve/articles/11648975.html 神炎皇: 打表找规律?和$\phi$有关? 答案就是$\sum\limits_{i=2}^ ...

  7. 使用vue-awesome-swiper滑块插件

    基于之前写的vue2.0 + vue-cli + webpack 搭建项目( vue-awesome-swiper版本:3.1.3 ,swiper4,如果成功后没报错,但不显示分页样式,可能版本对不上 ...

  8. js 实现页面局部(或图片)放大功能(vue)

    方法: adjustStart1 (e) { e.preventDefault() let event = e.touches if (event.length === 2) { this.style ...

  9. Java基础知识(数据类型和集合)

    一.数据类型 包装类型 包装类型是对基本数据类型不足之处的补充. 基本数据类型的传递方式是值传递,而包装类型是引用传递,同时提供了很多数据类型间转换的方法. Java1.5 以后可以自动装箱和拆箱 二 ...

  10. nosql BASE