博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 4244 邮戳拉力赛
阅读量:5236 次
发布时间:2019-06-14

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

思路:这个题真的是不会,不知道对于每个站点的状态怎么定义,只能根据经验知道有一维是用来维护站点的,但不知道其他的状态,看了聚聚们的博客才知道,由于必须从0开始n+1结束,所以在中间盖邮戳的必定是一个回路,转化成一个完全背包的模型,对于同一个站点,要么从左右两侧转移,要么就是走到邮戳台,所以是6种(左右转移两种,走路4种,这个窝想了很久),至于最有一层循环为什么是反向,我想你如果仔细的读过dd大牛的《背包九讲》就会知道

下面附上(chao xi)代码:

#include
using namespace std;const int maxn=3005;int n,t;long long dp[maxn][maxn];int u[maxn],v[maxn],d[maxn],e[maxn];int main(){ while(~scanf("%d%d",&n,&t)){ for(int i=1;i<=n;i++){ scanf("%d%d%d%d",&u[i],&v[i],&d[i],&e[i]); } memset(dp,0x3f,sizeof(dp)); dp[0][0]=0; for(int i=1;i<=n;i++){ for(int j=0;j<=n;j++) dp[i-1][j]+=2*t*j; for(int j=1;j<=n;j++) dp[i][j]=min(dp[i][j],min(dp[i-1][j-1],dp[i][j-1])+d[i]+v[i]); for(int j=0;j
=0;j--) dp[i][j]=min(dp[i][j],dp[i][j+1]+u[i]+e[i]); } printf("%lld\n",dp[n][0]+t*(n+1)); } return 0;}

 

转载于:https://www.cnblogs.com/lalalatianlalu/p/8471458.html

你可能感兴趣的文章
使用shared memory 计算矩阵乘法 (其实并没有加速多少)
查看>>
Django 相关
查看>>
git init
查看>>
训练记录
查看>>
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Hive教程(1)
查看>>
第16周总结
查看>>
C#编程时应注意的性能处理
查看>>
Fragment
查看>>
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>
使用C#交互快速生成代码!
查看>>
UVA11374 Airport Express
查看>>
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>
读书_2019年
查看>>
读书汇总贴
查看>>
微信小程序 movable-view组件应用:可拖动悬浮框_返回首页
查看>>
MPT树详解
查看>>