题解 P2920 【[USACO08NOV]时间管理Time Management】

news/2024/11/23 5:30:54/

好了,废话不多说,我们切入正题,首先,不懂得分治的可以去看这位大佬的文章,
这道题是让我们求最晚可以在什么时间起床,这里我们需要加入一个小小的贪心,就是结束时间短的放前面处理,至于为什么,相信你肯定能理解
然后,我们定义三个变量,\(left\) ,\(right\) ,\(mid\) ,其中,\(left\) 表示再找这个区间的起点,而 \(right\) 表示这个区间的终点,\(mid\) 表示它们中间的值,像这种地方,一般只需背个模板就行了,然后,本题最最重要的地方来了 —— 判断函数,(像本蒟蒻就是在这里卡了很久)
首先,我们可以这么判断,如果当前所在的时间加上这个任务所需要的时间,没有超过这个任务所必须结束的时间,那么,新的时间则等于原来的时间加上任务所花的时间,否则,证明这个数不合法,本题的思路就是这样,如果你还不明白,请仔细看下面的代码:

#include <iostream>
#include <cstdio>
using namespace std;
struct node
{int start;   //起始时间 int comes;   //必须在什么时间结束 
};
struct node que[1000001];
int n;
bool check(int cnt)
{int x,y,tnt=cnt;for(x=1;x<=n;x++){if(que[x].start+tnt<=que[x].comes)//如果当前的时间加上任务所需的时间小于等于结束时间,将新的时间等于旧的时间加上任务时间tnt=que[x].start+tnt;elsereturn false;//否则,说明这个数不合法}return true;
}
int main()
{int right=1000000000,left=1,mid=(left+right)/2;int i,j,k,ans=0;scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d %d",&que[i].start,&que[i].comes);//读入数据for(i=1;i<=n;i++)for(j=i+1;j<=n;j++)if(que[i].comes>que[j].comes)swap(que[i],que[j]);//结束时间短的需放在前面处理while(left<=right)//这个只是一个模板,本人使用的是记录答案法{mid=(left+right+1)/2;//防止死循环if(check(mid)){ans=mid;    //如果这个数合法,那么在它的右边寻找更优解left=mid+1;}elseright=mid-1;//否则,就在它的左边寻找解}if(ans!=0)cout<<ans;elsecout<<-1;return 0;//圆满结束
}

转载于:https://www.cnblogs.com/Call-me-zhz/p/11287107.html


http://www.ppmy.cn/news/505738.html

相关文章

BZOJ1620洛谷P2920 [USACO08NOV]时间管理Time Management

emm贪心题&#xff0c;但不知道怎么让我搞成了并查集 先将数组按结束时间排序&#xff0c;因为肯定先安排靠后的工作&#xff0c;后面处理时冲突会减小很多 然后如何并查集乱搞呢&#xff1f; 假如下图是一个没有加入任务的时间线{{20,5},{15,4},{12,3},{10,1},{5,2}}这是排…

CenOS 7.x的高级管理工具systemd介绍

文章目录 一、系统启动流程回顾二、CentOS 5.x,6.x,7.x的init程序区别三、systemd工具介绍3.1、systemd工具概述3.2、systemctl工具概述3.3、service以及chkconfig工具使用回顾3.4、systemd中的unit介绍3.5、systemctl工具实现service和chkconfig的功能3.6、systemctl实现运行级…

P2920题解【[USACO08NOV]时间管理Time Management】

这个题不难&#xff0c;但我是蒟蒻。。。 先看题目 题目&#xff1a; Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. He has N jobs conveniently numbered 1..N (1 < N < 1,000) to accomplish (like milking the co…

[vue3.x]实战问题--vue2.x升级vue3.x遇到的问题

主要是记录一在使用vue&#xff0c;并且从vue2.x升级版本过程中遇到的问题&#xff0c;方便以后的查找 环境 升级vuenext 脚手架&#xff1a;vue-cli vue:2.6.11更新脚手架 脚手架如果存在全局安装 npm i vue/cli -g然后在项目中更新vue/cli-service npm i vue/cli-servi…

HDU 2920 分块底数优化 暴力

其实和昨天写的那道水题是一样的&#xff0c;注意爆LL $1<n,k<1e9$&#xff0c;$\sum\limits_{i1}^{n}(k \mod i) nk - \sum\limits_{i1}^{min(n,k)}\lfloor\frac{k}{i}\rfloor i$ /** Date : 2017-09-21 19:55:31* FileName: HDU 2620 分块底数优化 暴力.cpp* Platf…

洛谷 P2920 [USACO08NOV]时间管理Time Management

P2920 [USACO08NOV]时间管理Time Management 题目描述 Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. He has N jobs conveniently numbered 1..N (1 < N < 1,000) to accomplish (like milking the cows, cleaning t…

Spark GraphX 聚合操作

package Spark_GraphXimport org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.graphx._ import org.apache.spark.graphx.util.GraphGenerators/*** 计算每一个用户的追随者数量和追随者的平均年龄*/ object Graphx_聚合操作 {def main(args: Array[Strin…

[二分答案] P2920 Time Management

推导贪心条件 排序 二分 输出 //#pragma GCC optimize(2) #include <cstdio> #include <iostream> #include <cstdlib> #include <cmath> #include <cctype> #include <string> #include <cstring> #include <algorithm> #…