题意:要求用三辆车往n座城市投递货物,起点都在一号城市,每辆车可以载任意数量的货物,投递顺序必须与城市编号递增序一致,并且,每次同时都只能有一辆车在跑路。求最短总路径之和。

思路:每时每刻,能够充分决定三辆车状态的变量即为三辆车的所在城市,因此,可以以三辆车所在城市为变量确立状态,可建立如下状态转移方程:

  dp[i][j][k]=min(dp[i][j][k],dp[i+1][j][k]+g[i][i+1],dp[i+1][i][k]+g[j][i+1],dp[i+1][i][j]+g[k][i+1]);

  对于该方程

    1.首先,i表示此时状态所到达的最大城市编号,j,k为其余两车所在城市

    2.采用倒序状态转移,即由dp[n][j][k]逐步转移到dp[1][1][1]

    3.三辆车完全相同,因此不需要考虑其顺序,某一时刻三辆车所处城市编号从大到小依次是i,j,k时,下一步可能是j->i+1,i->i+1,k->i+1.

代码如下:

  

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int t, n;
int g[][], dp[][][]; int main()
{
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
memset(dp, 0x3f, sizeof(dp));
for (int i = ; i < n; i++)
{
for (int j = i + ; j <= n; j++)
{
scanf("%d", &g[i][j]);
g[j][i] = g[i][j];
}
}
/*for (int j = 1; j <= n; j++)
for (int i = 1; i <= n; i++)
for (int k = 1; k <= n; k++)
g[i][k] = min(g[i][j] + g[j][k], g[i][k]);*/
for (int i = ; i <= n; i++)
for (int j = ; j <= n; j++)
dp[n][i][j] = ;
for (int i = n - ; i >= ; i--)
{
for (int j = ; j == || j < i; j++)
{
for (int k = ; k == || k < j; k++)
{
dp[i][j][k] = min(dp[i][j][k], dp[i + ][j][k] + g[i][i + ]);
dp[i][j][k] = min(dp[i][j][k], dp[i + ][i][k] + g[j][i + ]);
dp[i][j][k] = min(dp[i][j][k], dp[i + ][i][j] + g[k][i + ]);
}
}
}
int ans = 0x3f3f3f3f;
for (int i = ; i < n; i++)
for (int j = ; j < n; j++)
ans = min(ans, dp[][][]);
printf("%d\n", dp[][][]);
}
return ;
}

By xxmlala

最新文章

  1. 无表头单链表的总结----从a链表中删去与b链表中有相同ID的那些节点
  2. ACM:UESTC - 649 括号配对问题 - stack
  3. 在.htaccess文件中写RewriteRule无效的问题的解决
  4. Eclipse搭建GWT开发环境
  5. Photo Shop 设置
  6. android 入门-Service
  7. 转: HHVM at Baidu
  8. Preferred Java way to ping a HTTP Url for availability
  9. HDU 2069 Coin Change
  10. javaWeb学习总结(8)- JSP属性范围(5)
  11. Android--操作图片Exif信息
  12. 2018.5.24 lvm创建pool
  13. 变量安全过滤,防止xss攻击
  14. 如何提高sql查询速度
  15. Codeforces672D(SummerTrainingDay01-I)
  16. windows 自动贴边
  17. IntelliJ IDEA 界面介绍及常用配置
  18. 卓越研发之路 MOT技术管理者课堂
  19. iOS手势的综合运用
  20. [Python]关于return逻辑判断和短路逻辑

热门文章

  1. Spring Boot中的事务管理 隔离级别
  2. 用HQL自己写了个update!!!
  3. axios的get请求无法设置Content-Type
  4. lavarel数据库查找别名操作
  5. koa 项目实战(十)使用 validator 验证表单
  6. Android启动页面的正确打开方式 (转载)
  7. python之scrapy模块logging日志
  8. smarty section 循环不同的四个样式
  9. java的JDBC驱动使用链接数据库
  10. 九十七:CMS系统之模板抽离和个人信息页面