这是一道校内题目,但迷路的蒟蒻们同样被欢迎来此学习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. react-native 环境安装常见问题

    npm install react-native-cli -g react-native init yourproject npm install react-native run-ios 问题1:卡 ...

  2. KahnProcessNetwork的Python实现

    用Pytho实现了一个Kahn Process Network: 思路: 用Python的list模拟queue. 每个channel一个queue 用一个list (fgLog)来记录所有push到 ...

  3. Maven POM 模板[z]

    https://juejin.im/post/5cc826a5f265da03a33c443a [z]https://juejin.im/post/5cc826a5f265da03a33c443a S ...

  4. ControlTemplate in WPF —— Expander

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...

  5. Libvirt 版本降级过程记录 4.5.0 to 3.9.0

    前言 搞 OpenStack 开发 Libvirt 版本会随着 OpenStack 版本切来切去的,记录一下 Libvirt 从 4.5 降级到 3.9.0 的过程. 步骤 直接 downgrade ...

  6. flex布局使用方法简要汇总

    近期因为使用inline-block,在项目部署后出现了一点小问题,几番解决未果,遂使用flex布局,于是借此机会对flex布局的用法做一个简要的汇总. 遇到的bug如下: 本想两个div使用inli ...

  7. 如何在win10上运行httpRunner的api_server服务

    将下载的api_server.py放在d:/code文件夹下 安装flask :pip install flask 切换到d:/code文件夹下 浏览器打开地址:http://127.0.0.1:50 ...

  8. Action Script 3.0入门基本概念——IDE&编译与运行

    [编写ActionScript代码的工具] ActionScript代码是用纯文本编写的,所以ActionScript程序可以仅由简单的文本编辑器来创建,如Windows上的记事本或Macintosh ...

  9. python学习之模块-模块(一)

    第五章 5.1 自定义模块 模块概念: ​ 把一些常用的函数放在一个py文件中,这个文件就称之为模块. 模块的意义: ​ 1.方便管理.让程序的解构更加清晰,实现功能的重复使用: ​ 2.提升开发效率 ...

  10. ansible自动化运维管理工具

    1.Ansible介绍 1)Ansible:Ansible的核心程序 2)Host Inventory:(默认路径:/etc/ansible/hosts)记录了每一个由Ansible管理的主机信息,信 ...