题解 P2920 【[USACO08NOV]时间管理Time Management】
题面
作为一名忙碌的商人,约翰知道必须高效地安排他的时间.他有N工作要 做,比如给奶牛挤奶,清洗牛棚,修理栅栏之类的.
为了高效,列出了所有工作的清单.第i分工作需要T_i单位的时间来完成,而 且必须在S_i或之前完成.现在是0时刻.约翰做一份工作必须直到做完才能停 止.
所有的商人都喜欢睡懒觉.请帮约翰计算他最迟什么时候开始工作,可以让所有工作按时完成.(如果无法完成全部任务,输出-1)
题意
有一个人有N项工作,给N组数据,每组数据有Ti和Si,分别表示第i组工作需要花费的时间和最晚完成的时间。
初始时间为0,要求算出最晚可以什么时间开始工作。
题解
50分操作 (有BUG 不严谨证明)
由题意可以知道这道题可以尝试以下模拟操作。
排序每一项最晚完成的时间。
枚举,如果前i项任务完成时间超过第i项任务花费的时间,就非法,输出-1。
统计出每一项任务 最晚完成时间 - 花费时间的值。
排序输出最小的统计值。 (不完全归纳法得出3、4操作,不严谨证明)
#include<bits/stdc++.h>
using namespace std;
int n = 0,tong[1010];
struct edge{
int t,s;
bool operator < (const edge &qxq)
{
return s < qxq.s;
}
}num[1010];
int main(int argc, char const *argv[])
{
cin >> n;
for(int i = 1;i <= n;i++)
{
cin >> num[i].t >> num[i].s;
if(num[i].t > num[i].s)
{
cout << -1;
return 0;
}
tong[i] = num[i].s - num[i].t;
}
sort(num+1,num+n+1);
sort(tong+1,tong+n+1);
long long sum = 0;
for(int i = 1;i <= n;i++)
{
sum += num[i].t;
if(sum > num[i].s)
{
cout << -1;
return 0;
}
}
cout << tong[1];
return 0;
}
满分做法 AC100
建立在50分的操作上进行严谨的贪心证明。
排序每一项最晚完成的时间。
得出最晚完成的时间,并用一个中间变量存储。
枚举,用中间变量减去每一项所要花费的时间。
对结果进行判断,如果中间变量小于0,非法,输出-1;否则中间变量剩余的时间就是答案,也就是商人最晚起床时间。
#include<bits/stdc++.h>
using namespace std;
int n = 0;
struct edge{
int t,s;
bool operator < (const edge &qxq)
{
return s > qxq.s;
}
}num[1010];
int main(int argc, char const *argv[])
{
cin >> n;
for(int i = 1;i <= n;i++)
{
cin >> num[i].t >> num[i].s;
}
sort(num+1,num+n+1);
int ans = num[1].s;
for(int i = 1;i <= n;i++)
{
if(ans <= num[i].s) ans -= num[i].t;
else ans = num[i].s - num[i].t;
}
if(ans < 0) cout << "-1";
else cout << ans;
return 0;
}
题解 P2920 【[USACO08NOV]时间管理Time Management】的更多相关文章
- bzoj1620 / P2920 [USACO08NOV]时间管理Time Management
P2920 [USACO08NOV]时间管理Time Management 显然的贪心. 按deadline从大到小排序,然后依次填充时间. 最后时间为负的话那么就是无解 #include<io ...
- P2920 [USACO08NOV]时间管理Time Management
P2920 [USACO08NOV]时间管理Time Management 题目描述 Ever the maturing businessman, Farmer John realizes that ...
- 洛谷 P2920 [USACO08NOV]时间管理Time Management
传送门 题目大意: 每个工作有截至时间和耗费时间,n个工作求最小开始时间. 题解: 贪心 从n-1安排,让结束时间尽量的晚. 注意:优先级 cout<<st<0?-1:st; (X ...
- [LUOGU] P2920 [USACO08NOV]时间管理Time Management
见7.3测试 #include<iostream> #include<algorithm> #include<cstdio> using namespace std ...
- [USACO08NOV]时间管理Time Management(排序,贪心)
题目描述 作为一名忙碌的商人,约翰知道必须高效地安排他的时间.他有N工作要 做,比如给奶牛挤奶,清洗牛棚,修理栅栏之类的. 为了高效,列出了所有工作的清单.第i分工作需要T_i单位的时间来完成,而 且 ...
- [USACO08NOV]时间管理Time Management
题目描述 Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. H ...
- CMSIS-RTOS 时间管理之时间延迟Time Delay
时间管理 Time Management 此RTOS除了可以把你的应用代码作为线程运行,它还可以提供一些时间服务功能,使用这些功能你就可以访问RTOS的一些系统调用. 时间延迟Time Delay 在 ...
- 1620: [Usaco2008 Nov]Time Management 时间管理
1620: [Usaco2008 Nov]Time Management 时间管理 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 506 Solved: ...
- BZOJ 1620: [Usaco2008 Nov]Time Management 时间管理( 二分答案 )
二分一下答案就好了... --------------------------------------------------------------------------------------- ...
随机推荐
- Spark2.1.0——深入浅出度量系统
Spark2.1.0--深入浅出度量系统 对于一个系统而言,首先考虑要满足一些业务场景,并实现功能.随着系统功能越来越多,代码量级越来越高,系统的可维护性.可测试性.性能都会成为新的挑战,这时监控功能 ...
- [USACO 07DEC]Best Cow Line, Gold
Description 题库链接 给以长度为 \(n\) 的字符串,要求每次只能从两边取一个字符,使得取出来之后字典序最小. \(1\leq n\leq 30000\) Solution 将字符串翻转 ...
- EF批量操作数据与缓存扩展框架
前言 在原生的EF框架中,针对批量数据操作的接口有限,EF扩展框架弥补了EF在批量操作时的接口,这些批量操作包括:批量修改.批量查询.批量删除和数据缓存,如果您想在EF中更方便的批量操作数据,这个扩展 ...
- Java面向对象-------多态总结
1.多态:是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作,如图所示: 多态性是对象多种表现形式的体现. 2.多态作用: 1. 消除类型之间的耦合关系 ...
- 随机错乱排序(sort的应用)
新手上路,大家多多指教哈,,, #include <iostream> #include <algorithm> #include <ctime> using na ...
- MapReduce运行原理和过程
原文 一.Map的原理和运行流程 Map的输入数据源是多种多样的,我们使用hdfs作为数据源.文件在hdfs上是以block(块,Hdfs上的存储单元)为单位进行存储的. 1.分片 我们将这一个个bl ...
- HDU4289(KB11-I 最小割)
Control Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- Codeforces485D(SummerTrainingDay01-K)
D. Maximum Value time limit per test:1 second memory limit per test:256 megabytes input:standard inp ...
- 在微信小程序中引入 Iconfont 阿里巴巴图标库
小程序的代码包不能超过4M,为了压缩代码包的大小,可以通过第三方链接引入图标资源 Iconfont 无疑是最常用的第三方图标库,这里介绍一下在微信小程序引入 Iconfont 的方法 一.下载图标 首 ...
- org.springframework.web.util.NestedServletException Handler processing failed; n
因为谷歌的lists不支持或使用, 所有要改成java的list工具 谷歌list使用: import com.google.common.collect.Lists; .... Lists.newA ...