题目大意:

https://www.luogu.org/problemnew/show/P1280

题解 手推一遍思路更清晰

#include <bits/stdc++.h>
using namespace std;
struct NODE{ int x,y; }a[];
bool cmp(NODE& a,NODE& b) {
return a.x>b.x;
}
int sum[],dp[];
/// sum[i]记录在i时间开始的事情的个数
/// dp[i]记录从i到末尾最多的空闲时间
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=;i<k;i++) {
int u,v; scanf("%d%d",&u,&v);
a[i].x=u, a[i].y=v; sum[u]++;
}
sort(a,a+k,cmp); /// 按开始时间逆序排序
int m=;
for(int i=n;i>;i--) { /// 从末尾反过来扫一遍
if(!sum[i]) dp[i]=dp[i+]+;
// 如果这个时间点没有事件开始 则空闲时间+1
else /// 否则 判断做这几件事 能否使空闲时间更多
while(sum[i]--) {
if(dp[i+a[m].y]>dp[i]) // 若可以 则做这件事 得到更长的空闲时间
dp[i]=dp[i+a[m].y];
m++;
}
}
printf("%d\n",dp[]); return ;
}

P1280 尼克的任务 /// DP(选择性地)的更多相关文章

  1. 洛谷P1280 尼克的任务[DP]

    题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始 ...

  2. 洛谷P1280 尼克的任务 [DP补完计划]

    题目传送门 题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从 ...

  3. P1280 尼克的任务 dp

    思路: 倒着DP  f[i]表示i时刻的空闲时间最大值 在当前时间没有任务开始 f[i]=f[i+1]+1;    上一分钟最大空闲时间+1 在当前时间有任务开始  f[i]=max(f[i],f[i ...

  4. MEF(Managed Extensibility Framework)有选择性地使用扩展组件

    在"MEF(Managed Extensibility Framework)使用全部扩展组件"中,客户端应用程序调用了所有的扩展组件,而且如果有新的扩展组件加入,必须先关闭程序,再 ...

  5. P1280 尼克的任务 线性DP

    题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始 ...

  6. P1280 尼克的任务[区间覆盖dp]

    题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始 ...

  7. 洛谷P1280 尼克的任务【线性dp】

    题目:https://www.luogu.org/problemnew/show/P1280 题意: 给定k个任务的开始时间和持续时间要求在n时间内完成.问如何安排工作使得休息时间最多. 思路: 用d ...

  8. P1280 尼克的任务(DP)

    题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始 ...

  9. 【Luogu】P1280尼克的任务(DP)

    做顺序DP做惯了,死活没想到这是个倒序DP. f[i]表示时刻i的最大空闲时.有以下两种可能. 1.时刻i没有任务.此时f[i]=f[i+1]+1; 2.时刻i有许多任务.此时f[i]=max(f[i ...

随机推荐

  1. Java——包装类(Wrapper)

    2.7包装类(Wrapper) 基本数据类型由于不是类,不能够使用java类库里提供的大量的方法.所有在设计上,我们让每一个基本数据类型都对应一个类,同时数据存储的范围还不变.此时相当于基本数据类型就 ...

  2. Android中的Serialable和Parcelable的区别

    本文主要介绍Parcelable和Serializable的作用.效率.区别及选择,关于Serializable的介绍见<Java中的序列化Serialable高级详解> 1.作用 Ser ...

  3. POJ2449-A*算法-第k短路

    (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 题意:传送门  原题目描述在最下面.  给你一个有向图,求指定节点间的第k短路. 思路:  先反向跑出从终点开始的到每个节点的最短距离 ...

  4. class10_Frame 框架

    最终运行效果图(程序见序号2):   #!/usr/bin/env python # -*- coding:utf-8 -*- # ---------------------------------- ...

  5. CSS3教程:Responsive框架常见的Media Queries片段

    CSS3 Media Queries片段在这里主要分成三类:移动端.PC端以及一些常见的响应式框架的Media Queries片段.移动端Media Queries片段iPhone5@media sc ...

  6. 数据分析相关概念(numpy)

    矢量 矢量是指一堆形成的集合. 多维数组也叫做矢量化计算. 单独一个数叫做标量 例: import datetime as dt import numpy as np n2=10000 start2 ...

  7. USACO2008 Time Management /// 贪心 oj24386

    题目大意: 有N个工作被编号为1..N (1 ≤ N ≤ 1,000) 完成第i个工作需要T_i (1 ≤ T_i ≤ 1,000)的时间 第i个工作需在S_i (1 ≤ S_i ≤ 1,000,00 ...

  8. java笔试之查找组成一个偶数最接近的两个素数

    任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对. package test; import java.util.Sca ...

  9. python中的OrderedDict

    该类型存放顺序和添加顺序一致,比如逐个赋值,但和dict直接转化过去的顺序不一定一样. d1 = collections.OrderedDict() d1['b'] = 'B'd1['a'] = 'A ...

  10. Java 基础 - 原生类型

    更详细的说明,请参考: Java 原生类型与包装器类型深度剖析,https://blog.csdn.net/justloveyou_/article/details/52651211 一. 原生类型与 ...