T2695 桶哥的问题——送桶 题解
校内测试 ------T2
看完这个题,就觉得和贪心那一块的任务调度很像,于是思路就是贪心啦!
蒟蒻的我,也就只能想到用贪心了,但是不知道怎么用qwq
这是我考试当时的思路,数据水骗了80分qwq:
模拟了样例以后,发现了答案好像就是结束时间最大的那个再减去所有任务的时间(现在觉得有点不现实,数据是真的水);
又试了几组,发现如果有某个任务的结束时间和所用时间相同,那么答案一定为0,然后我又加了这个条件进去,然后就80分了。
下面说正解:
首先题目说明了“保证答案大于等于0”,也就是说明一定有解,那么就是每一个任务一定会被完成!
考虑对于任何一个任务i,我们都要尽量往后来安排它,最好还是卡着它的结束时间点,这样的话才是最优解
Why?-----减小对其他任务的影响!
看下面这个例子,如果我们不是将任务一贴着结束时间点放,而是任意放的话,那么可能就会影响到其他的任务!
看下面的例子,这是一个所用时间为2,结束时间为6的任务,显然上面的解不是最优解,因为4到6的两个时间可以用来偷懒啊qwq,所以尽量贴着结束时间点;
既然贴着结束时间点了,那么红色的那一部分我们就不用考虑了,因为做不了其他任务;
综合上面的几点,我们可以得到一个基本的做法了:
1.按照结束时间从大到小排序,让答案ans等于结束时间最大的那个;
2.ans减去该结束时间点所对应的任务所需的时间;
3.重点核心:若当前的ans值大于当前访问的结束时间点,让ans等于该结束时间点,再减去该任务所需的时间;
4.从结束时间大到小,重复第二步;
图解:
1.找到一个结束时间最大的任务---任务一(结束时间为6),此时ans=6;减去当前任务所需的时间,更新ans=6-2=4;
2.来到了第二个任务:发现该任务的结束时间点为3,比当前的ans要小!于是我们更新ans=b2=3,再减去当前任务的时间,更新ans=3-1=2;
那么最后的答案就是2了!
多次模拟以后,我们就懂得其中的巧妙用意了:
还是上面的例子,如果第二步没有使ans=b2,那么我们就会这样放置第二个任务:
因为每一步都是贪心贴着结束时间点来放置的,所以这就使得结束点为3的任务在4的时候完成!这是不合法的!
所以我们还要每次看看当前ans值是否小于当前任务的结束时间点,来保证每一步都是合法的!
OK,理解到这里,代码就出来了,是那么的短:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
char ch=getchar();
int a=,x=;
while(ch<''||ch>'')
{
if(ch=='-') x=-x;
ch=getchar();
}
while(ch>=''&&ch<='')
{
a=a*+(ch-'');
ch=getchar();
}
return a*x;
}
int n;
struct tong
{
int date,time;
}a[];
int cmp(tong x,tong y)
{
return x.date>y.date;
}
int main()
{
n=read();
for(int i=;i<=n;i++)
{
a[i].time=read();
a[i].date=read();
}
sort(a+,a++n,cmp);
long long ans=a[].date;
for(int i=;i<=n;i++)
{
if(ans>a[i].date) ans=a[i].date;
ans-=a[i].time;
}
cout<<ans;
return ;
}
对了,昨天没写完博客是因为8:25去看推荐生成绩了qwq(紧张 ,还好推荐生过了!!!
撒花祝贺qwq~~~
T2695 桶哥的问题——送桶 题解的更多相关文章
- 校内题目T2691 桶哥的问题——送桶
这是一道校内题目,但迷路的蒟蒻们同样被欢迎来此学习QWQ 题目描述: 题目背景 @桶哥本校——皎月pks大佬OrzOrz 买完了桶,桶哥要去送桶. 题目描述 桶哥买了nn个桶, 他要将这些桶送去nn个 ...
- T2691 桶哥的问题——送桶
这个题其实不难,就是按照结束时候的顺序从大到小走一遍,能送的就送,如果区间不重合就更新一下 代码: #include<iostream> #include<cstdio> #i ...
- 洛谷 T2691 桶哥的问题——送桶
嗯... 题目链接:https://www.luogu.org/problem/T2691 这道题有一点贪心的思想吧...并且思路与题目是倒着来的(貌似这种思路已经很常见的... 先举个栗子: 引出思 ...
- T2695 桶哥的问题——吃桶
~~~~~我~是~真的~忍不了~这个~取模~的~锅~了~~~~~ T2695 桶哥的问题——吃桶 前传 1.T2686 桶哥的问题——买桶 这题真的hin简单,真的 2.T2691 桶哥的问题——送桶 ...
- 【桶哥的问题——吃桶-简化版】【洛谷p2671】求和
求和=>[链接] 题目相较起_rqy出的要简单很多,来自noip普及组2015 化简这个式子:x+z=2y,故x与z mod 2同余,因此和桶哥的问题——吃桶一样的思路就可以做出来啦qwq: # ...
- 校内题目T2695 桶哥的问题——吃桶
同T2一样外校蒟蒻可能没看过: 题目描述: 题目背景 @桶哥 桶哥的桶没有送完. 题目描述 桶哥的桶没有送完,他还有n个桶.他决定把这些桶吃掉.他的每一个桶两个属性:种类aia_iai和美味值bib ...
- 【洛谷T2695 桶哥的问题——吃桶】
这是我们团队的一个题目(就是一个_rqy说很好写的题QwQ) 题目背景 @桶哥 这个题目的思路很玄学(性感_rqy在线讲解) 60 Pts 对于前面的六十分,好像很好拿,单纯的打一个模拟 唯一需要注意 ...
- T2695 桶哥的问题——吃桶 题解
校内测试 ------T3 对于这个题,首先想到的应该就是暴力枚举了吧,看看数据范围,60就是白送的啦!(但是我也不知道怎么才20分qwq) 思路分析: 这个题要你求所有套餐的总价值,先看一眼产生套餐 ...
- 【校内test】桶哥的问题
(以上题目出自_rqy两年前) #A:桶哥的问题——买桶[链接] [题目描述] 桶哥要买一些全家桶.他有a元钱,而每个桶要花b元钱.他能不能买到c个桶? [输入格式] 一行三个整数a, b, c [输 ...
随机推荐
- linux系统安全设置加固
描述 设置SSH空闲超时退出时间,可降低未授权用户访问其他用户ssh会话的风险 检查提示 -- 加固建议 编辑/etc/ssh/sshd_config,将ClientAliveInterval ...
- javascript 的惯性运动
移动端的惯性运动,最早来自 ios 的专利.用于手指滑动,离开屏幕之后,屏幕内容继续滚动.更有动态感. 这里,以 pc 端,鼠标横向(沿x轴) 拖拽的,惯性计算.移动端同理 具体代码如下: <! ...
- Codeforces 1097F. Alex and a TV Show
传送门 由于只要考虑 $\mod 2$ 意义下的答案,所以我们只要维护一堆的 $01$ 容易想到用 $bitset$ 瞎搞...,发现当复杂度 $qv/32$ 是可以过的... 一开始容易想到对每个集 ...
- 训练技巧详解【含有部分代码】Bag of Tricks for Image Classification with Convolutional Neural Networks
训练技巧详解[含有部分代码]Bag of Tricks for Image Classification with Convolutional Neural Networks 置顶 2018-12-1 ...
- arcgis之gp服务发布
arcgis之gp服务发布 注意: 1.arcgis服务可以直接通过arcmap来发布,gp服务就是将arcmap中的工具发布为服务,达到线上处理数据的能力 2.以文件为参数时不要以文件直接为参数,可 ...
- python3使用pytesseract进行验证码识别
pytesseract介绍 1.Python-tesseract是一个基于google's Tesseract-OCR的独立封装包: 2.Python-tesseract功能是识别图片文件中文字,并作 ...
- java之JVM学习--简单了解GC算法
JVM内存组成结构: (1)堆 所有通过new创建的对象都是在堆中分配内存,其大小可以通过-Xmx和-Xms来控制,堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区.Sur ...
- ASE19团队项目alpha阶段model组 scrum11 记录
本次会议于11月15日,19时整在微软北京西二号楼sky garden召开,持续5分钟. 与会人员:Jiyan He, Kun Yan, Lei Chai, Linfeng Qi, Xueqing W ...
- 【坑】Mybatis原始获取配置方式,获取配置失败
错误环境: mysql版本:6.0.6 mybatis 3.4.1 idea 2017.1.2 maven 3.5.0 错误描述: 配置经路径见图1,classpath是java文件夹 获取配置的代码 ...
- functools.lru_cache装饰器
functools.lru_cache装饰器 functools.lru_cache是非常实用的装饰器,他实现了备忘功能它把耗时的函数的结果保存起来,避免传入相同的参数时重复计算.LRU是Least ...