题意:牛有m个时间段可以挤奶,每个时间段的开始时间,结束时间,挤奶量不尽相同,寄完一次需要休息r时间,求在n时间内如何安排牛挤奶产量最大。

解题:

1.休息r时间,当做结束时间需要+r

2.以结束时间的先后对各个时间段排序,然后dp求最值。dp[i]表示当前到了第i个时间段。

3.状态转移方程:dp[i] = max( dp[i],dp[j]+a[i].v );

4.条件:当前i时间段的挤奶任务的开始时间 >= 以前j时间段的结束时间

简而言之,对m个时间段遍历,每次都求当前时间段 及以前的时间段 一起 挤奶量最大化。当前的dp[i]产量 与 以前时间段的最大挤奶量续上本次时间段的产量。

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<set>
#define ll long long
#define inf 0x3f3f3f3f
#define p 1000000007
using namespace std; int n,m,r;
struct node
{
int l;
int r;
int v;
};
node a[];
int dp[]; bool cmp( node p1,node p2 )
{
return p1.r<p2.r;
} int main()
{
while( scanf("%d %d %d",&n,&m,&r)!=EOF )
{
memset(dp,,sizeof(dp));
for(int i=;i<=m;i++)
scanf("%d %d %d",&a[i].l,&a[i].r,&a[i].v),a[i].r+=r;
sort(a+,a+m+,cmp);
/*
printf("\n");
for(int i=1;i<=m;i++)
printf("%d %d %d \n",a[i].l,a[i].r,a[i].v);
*/
int maxx=-inf;
for(int i=;i<=m;i++)///当前的时间段
{
dp[i]=a[i].v;///先赋值 第i个时间段自己的产量
//printf("dp[%d]=%d\n",i,dp[i]);观察dp变化
for(int j=i-;j>=;j--)///接前面的时间段
{
if( a[i].l >= a[j].r )
dp[i] = max( dp[i],dp[j]+a[i].v ); }
//printf("dp[%d]=%d\n",i,dp[i]);
maxx=max(maxx,dp[i]);
}
printf("%d\n",maxx);
}
return ;
}

最新文章

  1. iOS delegate
  2. haxe jni调用输入法
  3. 2.3 ARM寄存器详解
  4. Thinkphp内置截取字符串函数
  5. 根据上一行填充本行的空白栏位,SQL处理方式
  6. crawler:简要了解一下PhantomJS
  7. 再谈Jquery Ajax方法传递到action 【转载】
  8. TLSAlloc()
  9. 连载:面向对象葵花宝典:思想、技巧与实践(28) - 设计原则:内聚&amp;amp;耦合
  10. uvalive 2088 - Entropy(huffman编码)
  11. VR行业未来是会走向巅峰还是会归于落寞?
  12. 扩展对EasyUI的校验规则
  13. chattr文件锁
  14. JSON三种数据解析方法(转)
  15. Ubuntu 12.04上安装Hadoop并运行
  16. Redhat5_linux 系统环境下 oracl11g的安装教程图解
  17. js实现页面与页面之间传值的几种方法优劣
  18. 吐嘈OpenCV的图像旋转功能 &gt;_&lt;7
  19. linux中原子操作实现方式
  20. PAT Waiting in Line[转载]

热门文章

  1. Baidu UEditor .net 下修改默认上传路径
  2. Springboot Actuator之十:actuator中的audit包
  3. 10. Scala数据结构(上)-集合操作
  4. 【搬运工】RHEL6.5 移植使用CentOS 的YUM 步骤
  5. Prometheus 基于文件的服务发现
  6. 如何通过 IntelliJ IDEA 来提升 Java8 Stream 的编码效率
  7. javascript Class.method vs Class.prototype.method(类方法和对象方法)
  8. redis AbortOnConnectFail
  9. 6.Javascript如何处理循环的异步操作
  10. [TensorFlow 2.0] Keras 简介