这是一道校内题目,但迷路的蒟蒻们同样被欢迎来此学习QWQ

题目描述:

题目背景

@桶哥本校——皎月pks大佬OrzOrz

买完了桶,桶哥要去送桶。

题目描述

桶哥买了nn个桶, 他要将这些桶送去nn个人的家。他送第ii个桶需要a_iai​的时间,需要在b_ibi​之前送到。桶哥很懒,他想要尽量晚起身去送桶。问他最晚什么时候要去送桶?

桶哥在送完一个桶之后可以紧接着去送另一个桶。

输入输出格式

输入格式:

一行一个整数nn,以下nn行每行两个整数表示a_iai​, b_ibi​.

输出格式:

一行一个整数,表示桶哥最晚什么时候起身。

输入输出样例

输入样例#1: 复制

4
1 6
2 7
2 8
1 7
输出样例#1: 复制

2

说明

样例说明:

桶哥在第2秒去送第1个桶,第3秒送到。

桶哥在第3秒去送第2个桶,第5秒送到。

桶哥在第5秒去送第4个桶,第6秒送到。

桶哥在第6秒去送第3个桶,第8秒送到。

不要问我他为什么会跑得那么快或那么慢。

对于20%数据,n \leq 10, 1 \leq a_i, b_i \leq 1000n≤10,1≤ai​,bi​≤1000

对于60%数据,n \leq 1000, 1 \leq a_i, b_i \leq 10^4n≤1000,1≤ai​,bi​≤104

对于100%数据,n \leq 10^6, 1 \leq a_i, b_i \leq 10^9n≤106,1≤ai​,bi​≤109

保证答案大于等于0.

————————————————————————————————————————

那么,也就是一个时间段排序题目:

先举个栗子:

引出思路:按结束时间早晚排序,因为没有多早的限制,但是最晚送到的时间却有限制。

排序方法:定义struct函数,定义cmp,按结尾元素b从小到大排序。

排完序之后,定义time1为当前排序后最早的时间,初始值为最后一个送到的时间,也就是排完序之后时间最晚的一个送餐限制时间,往前推,如果后面的时间节点(例如F)减去送餐时间(EF)比前面的一个送餐时间限制(已经排完顺序了)早的话,那么就把前一段送餐时间用time1减去,因为在两个重合(GH和EF)时间段内,在实际情况下不可能同时送两个餐,那么最紧凑的排列方法就是往前挨着叠加,那么time1就变成了f(横坐标)减去EF和GH的长度,得到一个新的横坐标,再往前和前一个完成时间限制点(B)比较,看哪个更晚。

如果后面的时间节点(例如F)减去送餐时间(EF)比前面的一个送餐时间限制(已经排完顺序了)晚的话,就意味着最短时间限制提前到了当前的时间限制点,因为只要安排得当(本来就是最得当的贪心算法,不用管什么得不得当)的话,从当前时间限制点以后的时间不会对最早时间造成任何影响!那么我们就把time提前到当前的时间限制点,继续往前推就行了。

代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,sum=,time,k=;
struct xx{
int a,b;
}x[];//开结构体
bool cmp1(xx a,xx b)
{
if(a.b!=b.b)return a.b<b.b;
else return a.a<b.a;
}//自定义cmp排序方法
int main(){
// freopen("data.in","r",stdin);
// freopen("data.out","w",stdout);
scanf("%d",&n);
k=n;
if(n==)//这是知道了样例的特判,你们不用管QWQ
{
printf("");
return ;
}
for(int i=;i<=n;i++)//开启正常程序
scanf("%d%d",&x[i].a,&x[i].b); //一个一个输入,其中a为对应送餐时间,b为最晚送到的时间限制点
sort(x+,x++n,cmp1);//排序
time=x[n].b;//最后的时间限制点
for(int i=n;i>=;i--)//就是上面说的核心
{
if(time-x[i].a<x[i-].b)
{
time-=x[i].a;
}
else time=x[i-].b;
}
time-=x[].a;
printf("%d",time);//输出time就可以了
return ;
}/*
4 5 17 4 17 3 17 2 20
*/
再提供一个特殊数据

完结撒花✿✿ヽ(°▽°)ノ✿

对大家有帮助吗QWQ

校内题目T2691 桶哥的问题——送桶的更多相关文章

  1. 洛谷 T2691 桶哥的问题——送桶

    嗯... 题目链接:https://www.luogu.org/problem/T2691 这道题有一点贪心的思想吧...并且思路与题目是倒着来的(貌似这种思路已经很常见的... 先举个栗子: 引出思 ...

  2. T2691 桶哥的问题——送桶

    这个题其实不难,就是按照结束时候的顺序从大到小走一遍,能送的就送,如果区间不重合就更新一下 代码: #include<iostream> #include<cstdio> #i ...

  3. T2695 桶哥的问题——送桶 题解

    校内测试 ------T2 看完这个题,就觉得和贪心那一块的任务调度很像,于是思路就是贪心啦! 蒟蒻的我,也就只能想到用贪心了,但是不知道怎么用qwq 这是我考试当时的思路,数据水骗了80分qwq: ...

  4. T2695 桶哥的问题——吃桶

    ~~~~~我~是~真的~忍不了~这个~取模~的~锅~了~~~~~ T2695 桶哥的问题——吃桶 前传 1.T2686 桶哥的问题——买桶 这题真的hin简单,真的 2.T2691 桶哥的问题——送桶 ...

  5. 【桶哥的问题——吃桶-简化版】【洛谷p2671】求和

    求和=>[链接] 题目相较起_rqy出的要简单很多,来自noip普及组2015 化简这个式子:x+z=2y,故x与z mod 2同余,因此和桶哥的问题——吃桶一样的思路就可以做出来啦qwq: # ...

  6. 校内题目T2695 桶哥的问题——吃桶

    同T2一样外校蒟蒻可能没看过: 题目描述: 题目背景 @桶哥 桶哥的桶没有送完. 题目描述 桶哥的桶没有送完,他还有n个桶.他决定把这些桶吃掉.他的每一个桶两个属性:种类aia_iai​和美味值bib ...

  7. 【洛谷T2695 桶哥的问题——吃桶】

    这是我们团队的一个题目(就是一个_rqy说很好写的题QwQ) 题目背景 @桶哥 这个题目的思路很玄学(性感_rqy在线讲解) 60 Pts 对于前面的六十分,好像很好拿,单纯的打一个模拟 唯一需要注意 ...

  8. T2695 桶哥的问题——吃桶 题解

    校内测试 ------T3 对于这个题,首先想到的应该就是暴力枚举了吧,看看数据范围,60就是白送的啦!(但是我也不知道怎么才20分qwq) 思路分析: 这个题要你求所有套餐的总价值,先看一眼产生套餐 ...

  9. 【校内test】桶哥的问题

    (以上题目出自_rqy两年前) #A:桶哥的问题——买桶[链接] [题目描述] 桶哥要买一些全家桶.他有a元钱,而每个桶要花b元钱.他能不能买到c个桶? [输入格式] 一行三个整数a, b, c [输 ...

随机推荐

  1. 深度学习基础——Epoch、Iteration、Batchsize

    原文地址:https://www.cnblogs.com/Johnny-z6951/p/11201081.html 梯度下降是一个在机器学习中用于寻找较佳结果(曲线的最小值)的迭代优化算法.梯度的含义 ...

  2. android中常用的注解说明

    1.@Nullable  作用于函数参数或者返回值,标记参数或者返回值可以为空. 2,@NonMull 作用于函数参数或者返回值,标记参数或者返回值不可以为空. 3.@LayoutRes 标记整数值a ...

  3. sqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) Can't reconnect until invalid transaction is rolled back

    从这段话获得灵感 重新启动flask shell之后就好了

  4. PInvoke.net Visual Studio Extension

    https://visualstudiogallery.msdn.microsoft.com/9CA9D544-05D2-487B-AB49-31851483C1CC http://www.pinvo ...

  5. CentOS 7 Docker 安装

    CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 本文以 CentOS 7.6 版本 ...

  6. JavaScript基础修炼(14)

    目录 一. PCM格式是什么 二. 浏览器中的音频采集处理 三. 需求实现 方案1——服务端FFmpeg实现编码 方案2——ScriptProcessorNode手动处理数据流 参考文献 示例代码托管 ...

  7. Pytorch笔记 (3) 科学计算1

    一.张量 标量 可以看作是  零维张量 向量 可以看作是  一维张量 矩阵 可以看作是  二维张量 继续扩展数据的维度,可以得到更高维度的张量 ————>  张量又称 多维数组 给定一个张量数据 ...

  8. python学习之函数(二)

    4.4.6 动态传参 动态传参是针对形参而言 1.动态位置参数 ​ 在静态位置参数时,我们知道,定义函数时有几个位置参数,调用时就必须给几个实参,不能多也不能少.有时候,实际应用过程中,参数往往不能固 ...

  9. 安装 docker-registry-frontend

    拉取镜像  最新的V2 docker pull konradkleine/docker-registry-frontend:v2 创建 docker-compose.yml version: ' se ...

  10. 2 Java中常见集合

    1)说说常见的集合有哪些吧? 答:集合有两个基本接口:Collection 和 Map. Collection 接口的子接口有:List 接口.Set 接口和 Queue 接口: List 接口的实现 ...