问题 E: P1034

时间限制: 1 Sec  内存限制: 128 MB
提交: 29  解决: 22
[提交][状态][讨论版]

题目描述

尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成。 尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束。当尼克到达单位后他就开始干活。如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去写成,假如某些任务开始时刻尼克正在工作,则这些任务也由尼克的同事完成。如果某任务于第P分钟开始,持续时间为T分钟,则该任务将在第P+T-1分钟结束。 写一个程序计算尼克应该如何选取任务,才能获得最大的空暇时间。

输入

输入数据第一行包含两个用空格隔开的整数N和K,1≤N≤10000,1≤K≤10000,N表示尼克的工作时间,单位为分,K表示任务总数。 接下来共有K行,每一行有两个用空格隔开的整数P和T,表示该任务从第P分钟开始,持续时间为T分钟,其中1≤P≤N,1≤P+T-1≤N。

输出

输出文件仅一行包含一个整数表示尼克可能获得的最大空暇时间。

样例输入

15 6
1 2
1 6
4 11
8 5
8 1
11 5

样例输出

4
题目来源貌似是什么ACM经典题。
这题是一道倒着推的dp
dp数组存的是倒着最多可以休息的时间,因此输出也就是dp[1];
转移为如果当前时间没有任务则dp[i]=dp[i+1]+1;
如果有任务dp[i]=max(dp[i],dp[a[time]+b[time]]); (i=a[time])//表示有几个任务同时开始来枚举最大值。
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
const int MAXN=;
using namespace std;
int n,k,a[MAXN],b[MAXN],dp[MAXN];
int main()
{
memset(dp,,sizeof(dp));
scanf("%d%d",&n,&k);
for (int i=;i<=k;i++)
{
scanf("%d%d",&a[i],&b[i]);
}
int time=k;
for (int i=n;i>=;i--)
{
if (i!=a[time]) dp[i]=dp[i+]+;
else
{
while (i==a[time])
{
dp[i]=max(dp[i],dp[a[time]+b[time]]);
time--;
}
}
}
printf("%d",dp[]);
}
 

P1034的更多相关文章

  1. 「题目代码」P1034~P1038(Java)

    P1034 C基础-求同存异 import java.util.*; import java.io.*; import java.math.BigInteger; public class Main ...

  2. 洛谷P1034 矩形覆盖

    P1034 矩形覆盖 题目描述 在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示.例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2),p3(3,6),P4( ...

  3. 洛谷 P1034 矩形覆盖

    P1034 矩形覆盖 题目描述 在平面上有nn个点(n \le 50n≤50),每个点用一对整数坐标表示.例如:当 n=4n=4 时,44个点的坐标分另为:p_1p1​(1,11,1),p_2p2​( ...

  4. 洛谷 - P1034 - 矩形覆盖 - dfs

    https://www.luogu.org/problemnew/show/P1034 可能是数据太水了瞎搞都可以过. 判断两个平行于坐标轴的矩形相交(含顶点与边相交)的代码一并附上. 记得这里的xy ...

  5. TYVJ P1034 尼克的任务 Label:倒推dp

    背景 题库靠大家,人人都爱它. 描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成.尼克的一个工作 ...

  6. [vijos P1034] 家族

    寒假给自己定的第一个目标就是把并查集,Tarjan之类搞会.翻了翻笔记,发现并查集是2012年的6月30日学的…早就忘光了…今天敲题目的时候也吃了不少的亏呢… 家族这一题就是并查集的标准题,第一次提交 ...

  7. [P1034][NOIP2001]一元三次方程求解 (二分)

    二分 #include<bits/stdc++.h> using namespace std; double a,b,c,d; double fc(double x) { )+b*pow( ...

  8. 题解 P1034 【矩形覆盖】

    题面 在平面上有n个点(n≤50),每个点用一对整数坐标表示.例如:当n=4时,4个点的坐标分另为:p1(1,1),p2(2,2),p3(3,6),P4(0,7),见图一. 这些点可以用k个矩形(1≤ ...

  9. [NOIP2002] 提高组 洛谷P1034 矩形覆盖

    题目描述 在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示.例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2),p3(3,6),P4(0,7),见图一. 这 ...

随机推荐

  1. Linux使用远程X Server显示图形

    背景 通常我们不希望在服务器上安装图形界面,但有时候有些程序需要图形界面,比如安装oracle的时候.此时,可以配置让Linux使用远程的X Server进行图形界面显示. 首先要明确的是Linux ...

  2. POI实现excel各种验证和导入的思路总结

      制定标准 导入总是与导出相辅相成的,无规矩不成方圆.所谓的标准都是大家一同来维护和遵守的,那么首先就是制定一个模板. 这样可以减少验证的工作量. 例如时间的规范[yyyy-MM-dd],获取单元格 ...

  3. java TreeSet 应用

    本文主要是介绍一下java集合中的比较重要的Set接口下的可实现类TreeSet TreeSet类,底层用二叉树的数据结构 * 集合中以有序的方式插入和抽取元素. * 添加到TreeSet中的元素必须 ...

  4. MEF IOC使用

    IOC介绍 IOC:控制反转,DI:依赖注入.按我的理解应该是一个东西.作用目前我看到的主要是解除各个层之间的强耦合,实现接口分离.MEF优点: 1.net4 自带,无需安装扩展(引用System.C ...

  5. 车牌识别OCR—易泊时代智慧城市解决方案模块

    牌识别(License Plate Recognition,LPR) 是视频图像识别技术在智能交通领域中的一个模块.车牌识别运用OCR技术,将视频流或图片中的汽车牌照从复杂的应用场景中提取并识别出来, ...

  6. NHibernate教程(14)--使用视图

    本节内容 引入 1.持久化类 2.映射文件 3.测试 结语 引入 在数据库操作中,我们除了对表操作,还有视图.存储过程等操作,这一篇和下篇来学习这些内容.这篇我们来学习如何在NHibernate中使用 ...

  7. 波涛1202wm8833 lihomme/历织造 2013秋装全新男装夹克 整身年龄外套潮流立领男士休闲外套薄_9才号

    波涛1202wm8833 lihomme/历织造 2013秋装全新男装夹克 整身年龄外套潮流立领男士休闲外套薄_9才号 波涛1202wm8833lihomme/历织造2013秋装全新男装夹克整身年龄外 ...

  8. Assert中的静态方法

    junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类. 1.assertTrue/False([String message,]boolean cond ...

  9. Java单元测试之JUnit篇

    单元测试是编写测试代码,应该准确.快速地保证程序基本模块的正确性. 好的单元测试的标准 JUnit是Java单元测试框架,已经在Eclipse中默认安装. JUnit4 JUnit4通过注解的方式来识 ...

  10. 201521123003《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 我们利用Sca ...