现在这里orz 暗い之殇 orz大佬的思路~本蒟蒻看懂了~

题目背景

@桶哥

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

题目描述

桶哥买了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.

思路详解

题目中强调了保证答案大于等于0,说明答案一定是有解的。

对于如何安排,运用小学的数学知识可的,尽量将任务向后安排,最好是卡在结束时间完成,这样的目的是为了避免与其他任务发生冲突,可以让其他任务继续合理安排,这样的话才是最优解。

贴着结束时间点了完成任务后,那么红色的那一部分我们就不用考虑了,因为做不了其他任务;

综上所述,可得到一下思路:

1,将结束时间从大到小排序,让结果sum等于最大的一个

2,用结果sum减掉结果所用的时间

开始划重点:3,将当前结果sum与其他任务的结束点比较,如果sum小于其他任意一个结束点的值,那么替换,用ans减掉对应时间

4,重复2的步骤一直到结束

 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

图解: 

1.找到一个结束时间最大的任务---任务一(结束时间为6),此时sum=6;减去当前任务所需的时间,更新ans=6-2=4;

 

2.来到了第二个任务:发现该任务的结束时间点为3,比当前的sum要小!于是我们更新sum=b2=3,再减去当前任务的时间,更新sum=3-1=2;

那么最后的答案就是2了! 

多次模拟以后,我们就懂得其中的巧妙用意了:

还是上面的例子,如果第二步没有使sum=b2,那么我们就会这样放置第二个任务:

AC代码如下:

 1 /*桶哥买了nn个桶, 他要将这些桶送去nn个人的家。他送第ii个桶需要a_ia的时间,需要在b_ib 之前送到。桶哥很懒,他想要尽量晚起身去送桶。问他最晚什么时候要去送桶?
 2 输入格式
 3 一行一个整数nn,以下nn行每行两个整数表示a_ia
 4 输出格式
 5 一行一个整数,表示桶哥最晚什么时候起身。*/
 6 #include<bits/stdc++.h>
 7 using namespace std;
 8 int re()
 9 {
10     char ch=getchar();
11     int a=0,x=1;
12     while(ch<'0'||ch>'9')
13     {
14     if(ch=='-') x=-x;
15     ch=getchar();
16     }
17     while(ch>='0'&&ch<='9')
18     {
19         a=a*10+(ch-'0');
20         ch=getchar();
21     }
22     return a*x;
23 }
24 int n;
25 struct t
26 {
27     int da,ti;
28 }a[1000001];
29 int cmp(t x,t y)
30 {
31     return x.da>y.da;
32 }
33 int main()
34 {
35     n=re();
36     for(int i=1;i<=n;i++)
37     {
38         a[i].ti=re();
39         a[i].da=re();
40     }
41     sort(a+1,a+1+n,cmp);
42     long long sum=a[1].da;
43     for(int i=1;i<=n;i++)
44     {
45         if(sum>a[i].da) sum=a[i].da;
46         sum-=a[i].ti;
47     }
48     cout<<sum;
49     return 0;
50 }

 

转载于:https://www.cnblogs.com/Michael666/p/11242384.html

T2691 桶哥的问题——送桶相关推荐

  1. Es Bucket聚合(桶聚合) 第一篇(常用桶聚合一览)

    本篇将开始介绍Elasticsearch Bucket聚合(桶聚合). Buket Aggregations(桶聚合)不像metrics Aggregations(度量聚合)那样计算字段上的度量,而是 ...

  2. java的位桶是什么_Java关于桶排序的知识点总结

    前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本文从最简单的一个排序算法--桶排序开始,分析桶排序的实现思路,代码实现,性能特点以及适用场景. 0.其他排序算法索引 1.桶排序思想 ...

  3. 【逻辑】500桶酒,其中1桶是毒酒,找毒酒

    题目 500桶酒,其中1桶是毒酒:48小时后要举行酒会:毒酒喝下去会在之后的第23-24小时内毒死人:国王决定用囚犯来试酒,不介意囚犯死多少,只要求用最少的囚犯来测试出哪一桶是毒酒,问需要最少需要多少 ...

  4. 美团外卖uml流程图_美团外卖小哥手绘送餐流程图 追逐梦想要当产品经理

    原标题:美团外卖小哥手绘送餐流程图 追逐梦想要当产品经理 平日在网络上,外卖小哥深不见底的多边"技能"展示常常让大家拍手称赞.近日,有一位美团外卖小哥在现场徒手绘制外卖订餐流程图, ...

  5. Spring全家桶第一篇--认识全家桶

    Spring全家桶第一篇--认识全家桶 前言 什么是SPRING全家桶 前言 打算更新一下这两年来接触到的SPRING WEB方面的知识,此篇开搞.不定时更新 什么是SPRING全家桶 官网:http ...

  6. 1000桶酒中寻找一桶毒酒算法

    有1000桶酒,其中1桶有毒.而一旦吃了,毒性会在1周后发作. 现在我们用小老鼠做实验,要在1周后找出那桶毒酒,问最少需要多少老鼠, 如何检测(老鼠的使用量越少越好,注意,毒性1周后才会发作,而且一周 ...

  7. 1000桶酒中含两桶毒酒问题

    链接毒酒问题中给出如下问题: 国王为10天后的生日宴会准备了1000桶酒,不幸的是,其中两桶被下了毒.为了确定两桶毒酒,有人提议用死刑犯试毒.毒的潜伏期为10天.  问:至少需要多少个死刑犯才能确保找 ...

  8. c语言桶排序,排序算法之——桶排序

    这是本人的第一篇随笔,为的是分享学习经验,和大家讨论一些算法,以便取得些许进步,也是对学习的总结. 话不多说,下面我会用图文的方式向各位介绍桶排序. 1.主要思想: 桶排序的大体思路就是先将数组分到有 ...

  9. 2022年全球市场金属罐和桶和鼓和提桶总体规模、主要生产商、主要地区、产品和应用细分研究报告

    本文研究全球市场.主要地区和主要国家金属罐和桶和鼓和提桶的销量.销售收入等,同时也重点分析全球范围内主要厂商(品牌)竞争态势,金属罐和桶和鼓和提桶销量.价格.收入和市场份额等.针对过去五年(2017- ...

  10. 什么是限流?为什么会限流呢?常见的限流算法【固定窗口限流、滑动窗口限流、漏桶限流、令牌桶限流】是什么呢?

    什么是限流?为什么会限流呢?常见的限流算法[固定窗口限流.滑动窗口限流.漏桶限流.令牌桶限流]是什么呢? 什么是限流? 为什么会限流? 1. 固定窗口限流算法 1.1 什么是固定窗口限流算法 1.2 ...

最新文章

  1. Oracle安装ORA-12154和ORA-12169问题的解决
  2. TCP/IP详解 笔记十三
  3. L1-009 N个数求和(分数运算模板)(34行代码AC)
  4. SAP CRM呼叫中心工具栏按钮的渲染逻辑 - 缺CSDN
  5. Confluence wiki 使用记录
  6. 安卓案例:使用AChartEngine绘制折线图
  7. Java虚拟机学习总结(2)——性能优化的一般性原则、层次与通用方法
  8. 高效的css命名约定
  9. 用计算机用语说唯美的话,好听唯美的说说句子
  10. [读书笔记]《Windows游戏编程之从零开始》(零)
  11. 电子通讯录的基本模板
  12. Azure安全系列(2)-体验Azure Security Center(安全中心)
  13. 极通EWEBS化工行业应用虚拟化解决方案
  14. EXP6 信息搜集与漏洞扫描 20154328 常城
  15. php like 中文,punycode和中文转换 phpThe Twitter-clone/twitter-like sites collection
  16. 加拿大主教大学计算机世界排名,加拿大大学计算机专业排名
  17. 《UEFI内核导读》ACPI编程入门
  18. Windows常见扩展名介绍
  19. JAVA简易控制台选择题答题,改自书上代码
  20. 4.FTP服务配置与原理

热门文章

  1. 2015年 网络工程师试卷答案及详解
  2. 268. 丢失的数字【我亦无他唯手熟尔】
  3. 认同和确定性矩阵(Ralph Stacey's Agreement and Certainty Matrix)-译
  4. Word Embedding与Word2Vec
  5. PHP获取服务器图片并添加水印
  6. Newtonsoft.Json.Linq 简单使用
  7. 可以同情弱者,别同情弱势!
  8. 地理信息系统(GIS)的发展历程
  9. 驱动开发:内核遍历进程VAD结构体
  10. java 变量 英文_java 变量(翻译自Java Tutorials)