博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
caioj 1084 动态规划入门(非常规DP8:任务安排)(取消后效性)
阅读量:6308 次
发布时间:2019-06-22

本文共 715 字,大约阅读时间需要 2 分钟。

这道题的难点在于,前面分组的时间会影响到后面的结果

也就是有后效性,这样是不能用dp的
所以我们要想办法取消后效性
那么,我们就可以把影响加上去,也就是当前这一组加上了s
那么就把s对后面的影响全部加上
这个做法非常巧妙。

#include
#include
#include
#define REP(i, a, b) for(int i = (a); i < (b); i++)using namespace std;const int MAXN = 5123;int a[MAXN], t[MAXN], f[MAXN];int dp[MAXN], n, s;int main(){ scanf("%d%d", &n, &s); REP(i, 1, n + 1) { int x, y; scanf("%d%d", &x, &y); t[i] = t[i-1] + x; f[i] = f[i-1] + y; } memset(dp, 0x3f, sizeof(dp)); dp[0] = 0; REP(i, 1, n + 1) REP(j, 1, i + 1) //枚举最后一组的左端点 dp[i] = min(dp[i], dp[j-1] + (f[i] - f[j-1]) * t[i] + s * (f[n] - f[j-1])); printf("%d\n", dp[n]); return 0;}

 

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

你可能感兴趣的文章
没有功能需求设计文档?对不起,拒绝开发!
查看>>
4星|《先发影响力》:影响与反影响相关的有趣的心理学研究综述
查看>>
IE8调用window.open导出EXCEL文件题目
查看>>
python之 列表常用方法
查看>>
vue-cli脚手架的搭建
查看>>
在网页中加入百度搜索框实例代码
查看>>
在Flex中动态设置icon属性
查看>>
采集音频和摄像头视频并实时H264编码及AAC编码
查看>>
3星|《三联生活周刊》2017年39期:英国皇家助产士学会于2017年5月悄悄修改了政策,不再鼓励孕妇自然分娩了...
查看>>
linux查看命令是由哪个软件包提供的
查看>>
高级Linux工程师常用软件清单
查看>>
堆排序算法
查看>>
folders.cgi占用系统大量资源
查看>>
路由器ospf动态路由配置
查看>>
zabbix监控安装与配置
查看>>
python 异常
查看>>
last_insert_id()获取mysql最后一条记录ID
查看>>
可执行程序找不到lib库地址的处理方法
查看>>
bash数组
查看>>
Richard M. Stallman 给《自由开源软件本地化》写的前言
查看>>