这道题我一直按照往常的思路想
f[i]为前i个任务的最大空暇时间
然后想不出来怎么做……
后来看了题解
发现这里设的状态是时间,不是任务
自己思维还是太局限了,题做得太少。

很多网上题解都反着做,那么麻烦干嘛

设f[i]为前i时间内的最大空暇时间。
这里是更新后来的状态,和以前不一样。
如果i为某个任务的开始时间,则
f[i+t-1] = max(f[i+t-1], f[i])
也就是继承过去,取max
如果不是的话
f[i] = max(f[i], f[i-1] + 1)
加上获得的空暇时间
最后输出f[time],time为总时间

#include<cstdio>
#include<cstring>
#include<algorithm>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std;const int MAXN = 11234;
int f[MAXN], time, n;
struct node
{int l, r;bool operator < (const node& rhs) const{return l < rhs.l || (l == rhs.l && r < rhs.r); }
}a[MAXN];int main()
{scanf("%d%d", &time, &n);REP(i, 1, n + 1) scanf("%d%d", &a[i].l, &a[i].r);sort(a + 1, a + n + 1);memset(f, -63, sizeof(f));f[0] = 0;int p = 1;REP(i, 1, time + 1){if(a[p].l == i){while(a[p].l == i)f[i + a[p].r - 1] = max(f[i + a[p].r - 1], f[i-1]), p++;}else f[i] = max(f[i], f[i-1] + 1);}printf("%d\n", f[time]);return 0;
}

后来做到洛谷P1280,竟然做不出来了,看来对题解还是没有深刻的理解
(1)初始化问题。本来以为全部都是0无所谓的,然后就WA。
因为求最大,所以初始化为最小,同时f[0] = 0
(2)这里推时间是从f[i-1]推,不是f[i]

然后我发现把这个f数组输出来乱七八糟的。
但是答案是对的
有点迷(因为下标是时间??)

最后,这11天过来我的代码风格还是有少许改变的

#include<cstdio>
#include<algorithm>
#include<cstring>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
#define _for(i, a, b) for(int i = (a); i <= (b); i++)
using namespace std;const int MAXN = 112345;
int f[MAXN], n, k;
struct node
{ int l, r;void read() { scanf("%d%d", &l, &r); r = l + r - 1; }bool operator < (const node& rhs) const{return l < rhs.l || (l == rhs.l && r < rhs.r);}
}a[MAXN];int main()
{scanf("%d%d", &n, &k);REP(i, 0, k) a[i].read();sort(a, a + k);memset(f, -63, sizeof(f));f[0] = 0;int p = 0;_for(i, 1, n){if(a[p].l == i){while(a[p].l == i) f[a[p].r] = max(f[a[p].r], f[i-1]), p++;}else f[i] = max(f[i], f[i-1] + 1);}printf("%d\n", f[n]);return 0;
}

转载于:https://www.cnblogs.com/sugewud/p/9819413.html

洛谷P1280 caioj 1085 动态规划入门(非常规DP9:尼克的任务)相关推荐

  1. 洛谷题目按难度点评---入门难度

    洛谷题目按难度点评---入门难度 1.p1421 小玉买文具 难度:入门难度 考点:输入,输出,整数的四则运算 适用:小学生 #include <stdio.h> int main(){ ...

  2. 洛谷oj题单【入门2】分支结构-入门难度(Java)

    洛谷oj题单[入门2]分支结构-入门难度(Java) 来源:https://www.luogu.com.cn/training/101#problems P5709 [深基2.习6]Apples Pr ...

  3. 洛谷刷题记录(入门第一题)

    大家好,先自我介绍一下.我是sjksndnfkwks,目前大一学生,数据科学学院,从今天也就是2022年12月26日开始记录自己洛谷刷题的过程.目前为止我接触过java.python两种编程语言,所以 ...

  4. 【寒假每日一题】洛谷 P7471 [NOI Online 2021 入门组] 切蛋糕

    题目链接:P7471 [NOI Online 2021 入门组] 切蛋糕 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 Alice.Bob 和 Cindy 三个好朋友得到 ...

  5. caioj 1077 动态规划入门(非常规DP1:筷子)

    首先可以看出排序之后,最优解肯定是每一对都相邻才是最优的 那么我们就要找构成最优解的相邻组 设f[i][j]是前i个字符,k对的最小值 如果当前这个筷子不取的话,f[i][j] = f[i-1][j] ...

  6. caioj 1081 动态规划入门(非常规DP5:观光游览)

    这道题和前面的分组的题有点像 就是枚举最后一组的长度. 然后组数可以在第一层循环也可以在第二层循环 我自己的话就统一一下在第一层循环吧 然后这道题题意我一直没理解清楚,浪费了很多时间,写复杂了 同时初 ...

  7. 花店橱窗布置(洛谷P1854)(动态规划)

    传送门 文章目录 解析 问题 代码 解析 一道很正常的动态规划 dp[i][j]表示到第j个花瓶放了第j朵花的dp最优值 注意:是严格使第i朵放在j瓶 找到最优解递归输出即可 问题 又是初始化的问题! ...

  8. 洛谷-省选斗兽场-动态规划1

    记 练习一下动态规划水题系列,防止脑子生锈. P1879 玉米田 题解 非常典型的状态压缩DPDPDP,先预处理出所有可行的状态SSS. 然后逐行DP" role="present ...

  9. 洛谷 P1048 采药 01背包入门

    P1048 采药 最近想学dp了 一道非常简单入门的01背包,写此博客做一个教训,对01背包还不是特别熟,动态方程很容易就推出来了,但是写二维状态方程时wa了,然后改为一维过了. 主要还是对01背包不 ...

最新文章

  1. [z]IE6各种不兼容问题
  2. [shell进阶]——shell多线程
  3. 噪声产生原因_想要解决音响噪声,得先看这五大原因
  4. layuiajax提交表单控制层代码_漏洞预警|ThinkPHP 5.0 远程代码执行
  5. Linux下CMAKE编译jsoncpp,使用CMake引入jsoncpp
  6. tablespace innodb_index_stats is missing
  7. linux export 生效_Linux之提高命令行的工作效率
  8. 关系查询处理 查询优化 论文_论文导读基于查询负载的分布式RDF图分割和分配...
  9. 简述oracle函数的功能,Oracle 最常用功能函数经典汇总 (zz)
  10. 应用算法的实际情况——简单就是美
  11. c语言面试100问题及答案,【编程C语言面试题】面试问题:C语言面试大全… - 看准网...
  12. 创建华为云服务器实验报告,华为云正式发布云端实验室,真正实现云服务实验云上做...
  13. android img 解包打包工具,Android系统system.img解包和重新打包
  14. Codeforces 1179C Serge and Dining Room 线段树
  15. java 实现写出倒立三角形的几种方法
  16. python flask项目结构_Flask项目结构
  17. 一个简单的网路测试bat脚本
  18. 微积分位于基础数学的核心部分
  19. C语言源代码系列-管理系统之学生信息管理系统
  20. AspectJ 学习笔记:Aspect的生命周期

热门文章

  1. i2c的时钟延展问题(转)
  2. 关于Oracle full outer join 的bug问题分析及处理
  3. 合作伙伴常见技术问题集锦
  4. [转载]深入探索.NET框架内部了解CLR如何创建运行时对象
  5. 【转载】Python3 sorted函数中key参数的作用原理
  6. NPashaP的二分图源码部分
  7. Centos安装postgreSQL
  8. 非常有用的css使用总结
  9. 数据库中存储日期的字段类型究竟应该用varchar还是datetime ?
  10. win7安装virtualbox遇到的问题