校内测试 ------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 桶哥的问题——送桶 题解的更多相关文章

  1. 校内题目T2691 桶哥的问题——送桶

    这是一道校内题目,但迷路的蒟蒻们同样被欢迎来此学习QWQ 题目描述: 题目背景 @桶哥本校——皎月pks大佬OrzOrz 买完了桶,桶哥要去送桶. 题目描述 桶哥买了nn个桶, 他要将这些桶送去nn个 ...

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

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

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

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

  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. 第十三章 ZYNQ-MIZ701 TIMER定时器中断

      上篇文章实现了了PS接受来自PL的中断,本片文章将在ZYNQ的纯PS里实现私有定时器中断.每隔一秒中断一次,在中断函数里计数加1,通过串口打印输出. 本文所使用的开发板是Miz701 PC 开发环 ...

  2. String的equals和hashCode方法

    对于判断对象是否相等,肯定需要重写它的equals和hashCode方法.不然使用默认的方法只会比较地址,因此会出现错误. 以String类为例,且看它的equals方法 public boolean ...

  3. [转载]Grid Search

    [转载]Grid Search 初学机器学习,之前的模型都是手动调参的,效果一般.同学和我说他用了一个叫grid search的方法.可以实现自动调参,顿时感觉非常高级.吃饭的时候想调参的话最差不过也 ...

  4. Linux设备驱动中的软件架构思想

    目录 更新记录 一.Linux驱动的软件架构 1.1 出发点 1.2 分离思想 1.3 分层思想 二.platform设备驱动 2.1 platform设备 2.2 platform驱动 2.3 pl ...

  5. SAP云平台里Global Account和Sub Account的关系

    在Cloud Foundry环境里,一个Global Account或者Trial Account能够创建多个SubAccount,如图: 创建好的新的subaccount: 一旦subaccount ...

  6. 【atcoder】GP 2 [agc036C]

    题目传送门:https://atcoder.jp/contests/agc036/tasks/agc036_c 题目大意:给你一个长度为$N$初始全0的序列,每次操作你可以找两个不同的元素,一个自增1 ...

  7. Linux ppp 数据收发流程

    转:http://blog.csdn.net/yangzheng_yz/article/details/11526671 PPP (Point-to-Point)提供了一种标准的方法在点对点的连接上传 ...

  8. Mysql(四):数据操作

    一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...

  9. 13_Hive优化

    Hive优化 要点:优化时,把hive sql当做map reduce程序来读,会有意想不到的惊喜. 理解hadoop的核心能力,是hive优化的根本. 长期观察hadoop处理数据的过程,有几个显著 ...

  10. iTerm2快速SSH连接并保存密码

    背景 Mac自带terminal,以及比较好用的iTerm2命令行工具,都缺乏一个功能,就是远程SSH连接,无法保存密码.一种方法是将本机的ssh_key放到远程服务器中实现无密码登录.这种方法在很多 ...