题意:你有一头奶牛,你能够在一定的时间里挤奶。而且挤奶量也不同,每次挤奶要休息r时间,问你最大可以挤多少奶。

解题思路:这道题就是单调递增子序列的模型,dp[i]表示前i个任务可以得到的最优值。两层循环就搞定。

不知道为什么老是RE,

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;const int maxn = 2005;
struct Node
{int start,end,eff;
}interval[maxn];
int n,m,r,dp[maxn];bool cmp(Node a,Node b)
{if(a.start == b.start) return a.end < b.end;return a.start < b.start;
}int main()
{while(scanf("%d%d%d",&n,&m,&r)!=EOF){for(int i = 1; i <= m; i++)scanf("%d%d%d",&interval[i].start,&interval[i].end,&interval[i].eff);sort(interval+1,interval+1+m,cmp);memset(dp,0,sizeof(dp));for(int i = 1; i <= m; i++){dp[i] = interval[i].eff;for(int j = i-1; j >= 1; j--)if(interval[j].end + r <= interval[i].start)dp[i] = max(dp[i],dp[j] + interval[i].eff);}int ans = 0;for(int i = 1; i <= n; i++)ans = max(ans,dp[i]);printf("%d\n",ans);}return 0;
}

别人AC的代码:

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
struct eg
{int x,y,w;
}e[1005];
bool cmp(eg a,eg b)
{if(a.x==b.x)return a.y<b.y;return a.x<b.x;
}
int main()
{int n,m,r,dp[1005],ans;scanf("%d%d%d",&n,&m,&r);for(int i=0;i<m;i++){scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].w);}sort(e,e+m,cmp);ans=0;for(int i=0;i<m;i++)dp[i]=e[i].w;for(int i=0;i<m;i++){for(int j=0;j<i;j++){if(e[i].x>=e[j].y+r)dp[i]=max(dp[i],dp[j]+e[i].w);}ans=max(ans,dp[i]);}printf("%d\n",ans);return 0;
}

poj 3616(简单dp)相关推荐

  1. poj 3920(简单dp)

    题意:从起点每次最多跳s步,最多跳t次,从起点到终点的最大得分. 解题思路:dp[i][j]表示第i次跳到位置j的最大得分.简单的动态规划. #include<iostream> #inc ...

  2. poj 2355(简单dp)

    题意:求两个车站之间的最小费用. 解题思路:这道题本来应该是属于线段树优化的dp问题,但是数据太水了,所以O(n²)的复杂度也过了.主要是线段树的话难得打,所以就直接用暴力破了.这里有个坑:a可能大于 ...

  3. J - Milking Time POJ - 3616(dp动态规划)

    Bessie is such a hard-working cow. In fact, she is so focused on maximizing her productivity that sh ...

  4. 动态规划训练22 [Milking Time POJ - 3616 ]

    Milking Time POJ - 3616 说实话这道题目非常简单,本质上就是 多段有向图的求最大值问题.稍微变化的地方在于这个的的有向边没有那么明显 ,而是需要自己去寻找 如果任务i到任务j之间 ...

  5. POJ1088:滑雪(简单dp)

    题目链接:  http://poj.org/problem?id=1088 题目要求: 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小.求可以滑落的最长长度. 题目解析: 首先要先排一 ...

  6. Codeforces 41D Pawn 简单dp

    题目链接:点击打开链接 给定n*m 的矩阵 常数k 以下一个n*m的矩阵,每一个位置由 0-9的一个整数表示 问: 从最后一行開始向上走到第一行使得路径上的和 % (k+1) == 0 每一个格子仅仅 ...

  7. hdu2067 简单dp或者记忆化搜索

    题意: 小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  8. 第三讲 数学与简单DP【完结】

    目录 1205. 买不到的数目 [数学结论题] 1211. 蚂蚁感冒 [模拟 / 推理] 1216. 饮料换购 [简单 / 模拟] 2. 01背包问题 [板子题] 1015. 摘花生 [简单DP] 8 ...

  9. hdu 2881(简单dp)

     题意:n*n的矩阵,里面有m个格子是有任务要去完成的,t,x,y表示要在第t秒到达(x,y)的格子完成任务,问你最多可以完成多少 解题思路:简单dp,将时间排个序后就是LIS #include< ...

最新文章

  1. Mac OS Terminal Commands
  2. 开源用于寻找系外行星的代码
  3. 02 面向对象之:类空间问题以及类之间的关系
  4. Redis简介和Redis Template用法整理
  5. 《Linux内核设计与实现》读书笔记(十三)- 虚拟文件系统
  6. sql 注入 相关函数
  7. 捋一捋PDF、PMF、CDF是什么
  8. 网页关闭(解决window.close在火狐下不兼容问题)
  9. Tensorflow——会话
  10. 微信官方回应iOS 13.2频繁杀后台问题:建议先不升级
  11. linux -- 命令大全
  12. vc++源码免杀特殊技巧
  13. Python+OpenCV:Canny边缘检测
  14. c/c++ 宏中#和##的用法
  15. Wework和优客工场争相上市,共享办公第一股风云再起
  16. Virtualbox安装虚拟机教程
  17. 微信公众号的html5界面用什么软件,微信公众号编辑排版用什么软件(推荐这4款编辑器)...
  18. 阿里 P7 到底该具备什么样的能力?
  19. 【云原生】内存数据库如何发挥内存优势
  20. ruoyi-cloud代码生成(跨数据库)

热门文章

  1. 获取多台主机命令执行结果
  2. zabbix-web前端配置
  3. JDK8 指南(译)
  4. 微软修复Windows 10周年更新KB3194496累积更新安装问题
  5. Redis-stat的安装与使用
  6. Advanced Linq - Dynamic Linq query library: Add support for 'Contains' extension
  7. DPM2010恢复整个邮箱数据库
  8. WebSocket FlashSocket
  9. 使用Javascript来实现的超炫组织结构图(Organization Chart)
  10. 看了msn的站点有感