蒟蒻表示老久没看过dp题目了,,挺水的一道dp题目都没想出来,,,

  首先设dp[i]表示从开始到i时间的最大空闲时间,用vector to[x] 表示从x点开始的任务结束时间,cnt[x]表示从x开始的任务个数,初始化dp[i] i = 1 -> n 为 -1, dp[0]为0

  转移时,对于dp[i],如果dp[i-1] 为 -1,无法完成转移

  如果dp[i-1] > 0分两种情况

  1、如果i时刻无任务,直接dp[i] = max{dp[i], dp[i-1] + 1}

  2、如果i时刻有任务,枚举任务,使dp[to[i][j]] = max{dp[to[i][i]],dp[i-1]}

  输出dp[n]即为结果

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector> const int maxn = + ;
int n, k;
std :: vector <int> to[maxn];
int dp[maxn], cnt[maxn];
int tx, ty; int main () {
scanf("%d %d", &n, &k);
for (int i = ; i <= k; i++) {
scanf("%d %d", &tx, &ty);
to[tx].push_back(tx + ty - );
cnt[tx]++;
}
for (int i = ; i <= n; i++) dp[i] = -;
dp[] = ;
for (int i = ; i <= n; i++) {
if (dp[i-] >= ) {
if (cnt[i] > ) {
for (int j = ; j < to[i].size(); j++)
dp[to[i][j]] = std :: max(dp[to[i][j]], dp[i-]);
} else {
dp[i] = std :: max(dp[i], dp[i-] + );
}
}
}
printf("%d", dp[n]);
return ;
}

最新文章

  1. iPhone屏幕尺寸/launch尺寸/icon尺寸
  2. 如何使用FileZilla上传和下载文件
  3. 解决WARN: Timeout/setRollbackOnly of ACTIVE coordinator !的问题
  4. cvs update后输出的文件标志 和 update常用的几个参数
  5. botbrew下写glib2程序
  6. php基础30:正则匹配-量词
  7. 用sql的select语句从数据库中获取数据
  8. English Learning
  9. C++单例模板
  10. 利用fiddler将本地网页放到某个域下
  11. Init.rc分析(刘举奎)
  12. eventProxyAPI(转)
  13. java开源安全框架-------Apache Shiro--第二天
  14. 两种利用GCD实现分步获取结果的方式和SDWebImage缓存机制的验证
  15. VS2017编译LevelDB
  16. Java 详解 JVM 工作原理和流程
  17. Python使用np.c_和np.r_实现数组转换成矩阵
  18. 申请IPV6地址配置IPV6域名
  19. 中文全文检索讯搜xunsearch安装
  20. python作业学员管理系统(第十二周)

热门文章

  1. git指令总结及常见问题积累与解决方案
  2. ansible yum 模块 安装 vsftp
  3. python 添加自定义库
  4. SVN提交代码时报405 Method Not Allowed
  5. Git中的工作区(Working Directory)、暂存区(stage)和历史记录区(history)
  6. 第十一章 Servlet MVC模式
  7. EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY&#39;RE NOT. RENEWALS ARE LESSER
  8. ThinkPHP5.0框架开发--第4章 TP5.0路由
  9. [Codeforces 911F] Tree Destruction 解题报告(贪心)
  10. Synergy 共享键盘和鼠标