题解 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 时间管理( 二分答案 )
		二分一下答案就好了... --------------------------------------------------------------------------------------- ... 
随机推荐
- react高阶组件的理解
			[高阶组件和函数式编程] function hello() { console.log('hello jason'); } function WrapperHello(fn) { return fun ... 
- django2.1---admin 修改模块的名字为中文显示
			只需要写两个地方 1.应用下的__init__.py default_app_config = 'user.apps.UserConfig' 2.应用下apps.py from django.apps ... 
- 深入贯彻闭包思想,全面理解JS闭包形成过程
			谈起闭包,它可是JavaScript两个核心技术之一(异步和闭包),在面试以及实际应用当中,我们都离不开它们,甚至可以说它们是衡量js工程师实力的一个重要指标.下面我们就罗列闭包的几个常见问题,从回答 ... 
- Mysql密码忘记了怎么办?
			停止mysql: sudo /etc/init.d/MySQL stop(可能有其它的方法,总之停止MySQLd的运行就可以了) 修改mysql的配置文件: 在/etc/mysql/mysql.con ... 
- spring中@Scope控制作用域
			注解形势:通过@Scope注解控制作用域,默认使用单实例模式,可修改为多实例模式 /** * Specifies the name of the scope to use for the annota ... 
- 脚本执行错误---/bin/sh^M:损坏的解释器 没有那个文件或目录
			在执行脚本时,弹出错误提示: 这是由于脚本文件在保存时使用了DOS文件格式造成的,可以用vim打开文件,然后执行下列操作: 
- AutoFac实现WebAPI依赖注入(EF以及Mysql)
			什么是依赖注入? 我们以实际的例子来加以介绍 实体如下 public class Product { public int ID { get; set; } public string Name { ... 
- Python标准库--UUID
			UUID(Universally Unique Identifier)是128位通用唯一识别码,通常由32字节的字符串表示.它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID —— Uni ... 
- js 匿名函数立即执行问题
			js立即执行函数写法理解 这篇真的写得很清楚了,不光括号可以将函数声明转换成函数表达式然后立即执行,!,+,-,=也都可以转换,但是可能会带来意外的结果,因此一般都用括号实现. 还有关于for (va ... 
- session与cookie的区别和用法
			一.session 1.保存在服务器的,每个人存一份2.可以存储任何类型数据3.有一个默认过期时间注意:在所有使用session的页面最顶端要开启session---session_start();存 ... 
