我又开始水了,感觉又是一道虚假的蓝题

题意

非常好理解,自己看吧

题解

可以比较轻易的发现,如果对于一段满足和大于等于 \(m\) 的区间和其满足和大于等于 \(m\) 的子区间来说,选择子区间肯定是不会更劣的,所以对于一个右边界 \(r\) ,我们只需要找出满足条件的最大的左边界 \(l\) ,就可以更新答案了。

不难发现,这个左右边界都是单调递增的,所以可以考虑尺取法,同时在维护一个区间最大值。

维护区间最大值的东西有很多:线段树,\(st\) 表,单调队列,平衡树(\(set\))……随便用一个就可以了。

代码如下:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. const int N=1e5+5;
  5. int n,m;
  6. int s[2][N];
  7. struct Seg_Tree
  8. {
  9. int n,tr[N<<4];
  10. void up(int u){tr[u]=max(tr[u<<1],tr[u<<1|1]);}
  11. void build(int u,int l,int r,int a[])
  12. {
  13. if(l==r) {tr[u]=a[l];return;}
  14. int mid=(l+r)>>1;
  15. build(u<<1,l,mid,a);
  16. build(u<<1|1,mid+1,r,a);
  17. up(u);
  18. return;
  19. }
  20. int query(int u,int l,int r,int x,int y)
  21. {
  22. if(x<=l&&r<=y) return tr[u];
  23. int mid=(l+r)>>1,res=0;
  24. if(x<=mid) res=max(res,query(u<<1,l,mid,x,y));
  25. if(y>mid) res=max(res,query(u<<1|1,mid+1,r,x,y));
  26. return res;
  27. }
  28. }t;
  29. int ans=1e9+7;
  30. signed main()
  31. {
  32. cin>>n>>m;t.n=n;
  33. for(int i=1;i<=n;++i)
  34. scanf("%lld%lld",&s[0][i],&s[1][i]);
  35. t.build(1,1,t.n,s[1]);
  36. int l=1,r=0,tmp=0;
  37. while(tmp<m)
  38. tmp+=s[0][++r];
  39. for(;r<=n;++r)
  40. {
  41. tmp+=s[0][r];
  42. while(tmp-s[0][l]>=m)
  43. tmp-=s[0][l++];
  44. ans=min(ans,t.query(1,1,t.n,l,r));
  45. }
  46. printf("%lld\n",ans);
  47. return 0;
  48. }

P4085 [USACO17DEC]Haybale Feast的更多相关文章

  1. Luogu4085 [USACO17DEC]Haybale Feast (线段树,单调队列)

    \(10^18\)是要long long的. \(nlogn\)单调队列上维护\(logn\)线段树. #include <iostream> #include <cstdio> ...

  2. BZOJ5142: [Usaco2017 Dec]Haybale Feast(双指针&set)(可线段树优化)

    5142: [Usaco2017 Dec]Haybale Feast Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 182  Solved: 131[ ...

  3. BZOJ5142: [Usaco2017 Dec]Haybale Feast 线段树或二分答案

    Description Farmer John is preparing a delicious meal for his cows! In his barn, he has NN haybales ...

  4. [USACO 2017DEC] Haybale Feast

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5142 [算法] 首先用RMQ预处理S数组的最大值 然后我们枚举右端点 , 通过二分求 ...

  5. USACO 2015 December Contest, Gold Problem 2. Fruit Feast

    Problem 2. Fruit Feast 很简单的智商题(因为碰巧脑出来了所以简单一,一 原题: Bessie has broken into Farmer John's house again! ...

  6. Fruit Feast

    Fruit Feast 题目描述 Bessie has broken into Farmer John's house again! She has discovered a pile of lemo ...

  7. 2620: [Usaco2012 Mar]Haybale Restacking

    2620: [Usaco2012 Mar]Haybale Restacking Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 201  Solved:  ...

  8. 洛谷 P2898 [USACO08JAN]haybale猜测Haybale Guessing 解题报告

    [USACO08JAN]haybale猜测Haybale Guessing 题目描述 给一段长度为\(n\),每个位置上的数都不同的序列\(a[1\dots n]\)和\(q\)和问答,每个问答是\( ...

  9. POJ 3657 Haybale Guessing(区间染色 并查集)

    Haybale Guessing Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2384   Accepted: 645 D ...

随机推荐

  1. charles技能之修改请求参数/返回数据(map Local、Rewrite、Breakpoints)

    之前一直用postman调接口比较多,但有时候想要去修改APP的页面展示,造数据又会比较麻烦,此时可以用以下三种方法修改请求参数或修改响应: map Local(本地映射).Breakpoints(打 ...

  2. 07 . 前端工程化(ES6模块化和webpack打包)

    模块化规范 传统开发模式主要问题 /* 1. 命名冲突 2. 文件依赖 */ 通过模块化解决上述问题 /* 模块化就是把单独的一个功能封装在一个模块(文件)中,模块之间相互隔离, 但是可以通过特定的接 ...

  3. 协程实现socket并发编程

    在python中多线程其实是被弱化了,因为由于GIL的原因,同一时间只有一个线程能访问CPU,即使你的CPU是多核的在python中因为多线程被弱化了,所以协程显的重要,能够在一个线程中提高CPU的利 ...

  4. 源码分析:CountDownLatch 之倒计时门栓

    简介 CountDownLatch 是JDK1.5 开始提供的一种同步辅助工具,它允许一个或多个线程一直等待,直到其他线程执行的操作完成为止.在初始化的时候给定 CountDownLatch 一个计数 ...

  5. LeetCode 中等题解(2)

    31 下一个排列 Question 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须 ...

  6. linux 用户组操作

    1. 添加用户到...目录中useradd -M -s /目录 username 2. 添加用户属于多个组 usermod -G 本组(用户名),组1,组2... 用户名 3. mysql添加禁止登录 ...

  7. Oracle数据泵的导入和导出

    前言 今天王子要分享的内容是关于Oracle的一个实战内容,Oracle的数据泵. 网上有很多关于此的内容,但很多都是复制粘贴别人的,导致很多小伙伴想要使用的时候不能直接上手,所以这篇文章一定能让你更 ...

  8. property,类方法和静态方法

    # from math import pi # # class Circle: # def __init__(self, r): # self.r = r # # @property # def pe ...

  9. 装了IDM后看网页有时会自动弹出下载怎么办

    我们在安装了IDM之后,浏览一些网站时可能会自动弹文件下载窗口,但有时内容并非我们要下载的.对此类自动弹下载对话框的情况,操作者可进行自定义设置.不仅可通过设置文件格式来禁止自动弹窗,也可通过设置特定 ...

  10. FL Studio中的音频剪辑功能讲解

    音频剪辑,是FL Studio中的一个特色功能,音频剪辑的目的是保持在播放列表中显示和触发的音频,可以根据需要对它们进行切片和排列.但需要注意的是音频剪辑这个功能在FL Studio的基础版(果味版) ...