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

题意

非常好理解,自己看吧

题解

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

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

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

代码如下:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+5;
int n,m;
int s[2][N];
struct Seg_Tree
{
int n,tr[N<<4];
void up(int u){tr[u]=max(tr[u<<1],tr[u<<1|1]);}
void build(int u,int l,int r,int a[])
{
if(l==r) {tr[u]=a[l];return;}
int mid=(l+r)>>1;
build(u<<1,l,mid,a);
build(u<<1|1,mid+1,r,a);
up(u);
return;
}
int query(int u,int l,int r,int x,int y)
{
if(x<=l&&r<=y) return tr[u];
int mid=(l+r)>>1,res=0;
if(x<=mid) res=max(res,query(u<<1,l,mid,x,y));
if(y>mid) res=max(res,query(u<<1|1,mid+1,r,x,y));
return res;
}
}t;
int ans=1e9+7;
signed main()
{
cin>>n>>m;t.n=n;
for(int i=1;i<=n;++i)
scanf("%lld%lld",&s[0][i],&s[1][i]);
t.build(1,1,t.n,s[1]);
int l=1,r=0,tmp=0;
while(tmp<m)
tmp+=s[0][++r];
for(;r<=n;++r)
{
tmp+=s[0][r];
while(tmp-s[0][l]>=m)
tmp-=s[0][l++];
ans=min(ans,t.query(1,1,t.n,l,r));
}
printf("%lld\n",ans);
return 0;
}

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. python 之路 面向对象

    ---恢复内容开始--- 一切  万物皆对象. 面向对象其实只是一种编程方式.面向对象式编程可以在很大程度上帮助我们节省时间内存,等问题是我们的代码简单明了. 那么首先定义的格式为class clas ...

  2. linux文件的3个时间和7种文件类型

    linux文件的三个时间:  atime: access time --最近访问时间. ctime: change time --最近改变时间. mtime:modify time --最近修改时间. ...

  3. linux配置yum源、mount及yum命令

    配置yum源:  在/mnt目录下新建一个空的目录,名为rhel. [root@localhost mnt]# mkdir rhel 然后 [root@localhost Packages]# cd ...

  4. 系统运行后修改linux系统时区

    在网上看了很多改时间的帖子,都没能最终解决问题.最后还是下面的博客最终解决的时间的问题,感谢原作者 安装系统过程时没有选对当前的时区,即CST,Asia/Shanghai,而是按默认的,EDT时区,这 ...

  5. python any,call,init,下划线知识汇总

    python补充 any() [来自菜鸟教程] any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True. 元素 ...

  6. .Net 开源项目 FreeRedis 实现思路之 - Redis 6.0 客户端缓存技术

    写在开头 FreeRedis 是一款继 CSRedisCore 之后重写的 .NET redis 客户端开源组件,以 MIT 协议开源托管于 github,目前支持 .NET 5..NETCore 2 ...

  7. redis的分布式锁工具LockUtil

    /** * 基于redis的分布式锁工具 * * @author yuyufeng * */ public class LockUtil { // 获取redis static JedisPool j ...

  8. 13.java设计模式之模板模式

    基本需求: 制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材.浸泡和放到豆浆机打碎这几个步骤对于制作每种口味 ...

  9. ppt-页面大小和颜色更改

    1.ppt大小设置:设计--幻灯片大小--可选择标准.宽屏或自定义幻灯片大小--下拉 幻灯片大小可选择其他尺寸的幻灯片 2.设置图片背景 设计--设置背景格式--依次有纯色.渐变.图案等填充 2.1 ...

  10. Docker安装基本命令操作,带你了解镜像和容器的概念!

    上一章节我们了解了Docker的基本概念,以及相关原理.这一章节进行实操. <Docker这么火爆.章节一:带你详尽了解Docker容器的介绍及使用> 一.Docker安装 声明:Dock ...