dp +路径输出

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <stack>
  5. #include <vector>
  6. #include <sstream>
  7. #include <cstring>
  8. #include <string>
  9. #include <map>
  10. #include <set>
  11. #include <queue>
  12. #include <algorithm>
  13. #include <iostream>
  14. #define FFI freopen("in.txt", "r", stdin)
  15. #define maxn 1010
  16. #define INF 0x3f3f3f3f
  17. #define inf 10000000
  18. #define MOD 1000000007
  19. #define ULL unsigned long long
  20. #define LL long long
  21. #define _setm(houge) memset(houge, INF, sizeof(houge))
  22. #define _setf(houge) memset(houge, -1, sizeof(houge))
  23. #define _clear(houge) memset(houge, 0, sizeof(houge))
  24. using namespace std;
  25.  
  26. int dp[35][205], n, k;
  27. int loc[210], w[210][210];
  28.  
  29. void fun(int m,int x,int y) {
  30. if(x == y)
  31. printf("Depot %d at restaurant %d serves restaurant %d\n", m, x, y);
  32. else
  33. printf("Depot %d at restaurant %d serves restaurants %d to %d\n", m, (x+y)/2, x, y);
  34. }
  35.  
  36. void print(int x, int y, int sum) {
  37. if(x == 1) {
  38. fun(x, x, y);
  39. return;
  40. }
  41. else {
  42. for(int i = x; i <= y; ++ i) {
  43. if(w[i][y] + dp[x-1][i-1] == sum) {
  44. print(x-1, i-1, sum-w[i][y]);
  45. fun(x, i, y);
  46. break;
  47. }
  48. }
  49. }
  50. }
  51.  
  52. int main() {
  53. FFI;
  54. int ca = 0;
  55. while(scanf("%d%d", &n, &k) == 2 && n+k) {
  56. for(int i = 1; i <= n; ++ i) {
  57. scanf("%d", &loc[i]);
  58. }
  59. _clear(w);
  60. _setm(dp);
  61. for(int i = 1; i <= n; ++ i) {
  62. for(int j = i; j <= n; ++ j) {
  63. for(int d = i; d <= j; ++ d) {
  64. w[i][j] += abs(loc[d]-loc[(i+j)/2]);
  65. }
  66. }
  67. }
  68. for(int i = 1; i <= n; ++ i) dp[1][i] = w[1][i];
  69. for(int i = 2; i <= k; ++ i) {
  70. for(int j = n; j >= i; -- j) {
  71. for(int d = i-1; d <= j; ++ d) {
  72. dp[i][j] = min(dp[i][j], dp[i-1][d]+w[d+1][j]);
  73. }
  74. }
  75. }
  76. printf("Chain %d\n", ++ ca);
  77. print(k, n, dp[k][n]);
  78. printf("Total distance sum = %d\n\n", dp[k][n]);
  79. }
  80. return 0;
  81. }

  

uva 662的更多相关文章

  1. Problem W UVA 662 二十三 Fast Food

    Fast Food Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status P ...

  2. DP(递归打印路径) UVA 662 Fast Food

    题目传送门 题意:n个饭店在一条直线上,给了它们的坐标,现在要建造m个停车场,饭店没有停车场的要到最近的停车场,问所有饭店到停车场的最短距离 分析:易得区间(i, j)的最短距离和一定是建在(i + ...

  3. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  4. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  5. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  6. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

  7. UVA计数方法练习[3]

    UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...

  8. UVA数学入门训练Round1[6]

    UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...

  9. UVA - 1625 Color Length[序列DP 代价计算技巧]

    UVA - 1625 Color Length   白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束   和模拟赛那道环形DP很想,计算这 ...

随机推荐

  1. 使用原生JavaScript模拟getElementByClassName .

    最近在工作中,由于有一个插件必须使用jquery-pack.js,而这个包又是非常古老的jquery,所以又的函数是无法使用的,例如$()选择器以及parent()都取不到标签的内容. 所以没办法,只 ...

  2. Win2D 入门教程 VB 中文版 - 防止内存泄漏

    避免内存泄漏 本文从微软官方文档翻译 http://microsoft.github.io/Win2D/html/RefCycles.htm 如果文档有问题,可以在 https://github.co ...

  3. PHP中session和cookie的区别

    这个话题无论是系统运维还是PHP开发人员面试时会经常遇到,所以这里也进行一些总结和归纳,session和cookie的具体理论网上比较大,大家googel下均可;系统运维注意区分下session(会话 ...

  4. js 逻辑运算符、等号运算符

    1 逻辑运算符 逻辑运算只有2个结果,一个为true,一个为false. 1.且&& ★ 两个表达式为true的时候,结果为true. ------------------------ ...

  5. ImportError: pycurl: libcurl link-time ssl backend (nss) is different

    reference pip uninstall pycurl export PYCURL_SSL_LIBRARY=nss easy_install pycurl

  6. modify django app models.py adn settings.py

    from django.db import models from django.contrib import admin # from personal import models class Us ...

  7. java内存模型(线程独占部分)

    线程独占部分 1.你了解Java的内存模型吗? 内存简介 有内核空间.用户空间(java是运行在用户空间上) 32位系统--->最大的访问内存大小是4G 62位系统--->最大的访问内存大 ...

  8. FreeMarker与SSH项目整合流程

    FreeMarker与SSH项目整合流程 学习了SSH之后,一般为了减少数据库的压力,会使用FreeMarker来生成静态HTML页面.下面简单说一下FreeMarker与SSH项目的整合全过程~ 前 ...

  9. python3.x Day6 IO多路复用

    IO多路复用import asyncio 这个是异步IO模块 这个还不知道怎么用 select poll epoll 都是IO多路复用 windows 仅支持select linux2.6以后 支持e ...

  10. 2017acm南宁现场赛 J题 Rearrangement

    题意: 给定一个2 * n的矩阵, 和 2 * n 个数, 问能不能通过重排列, 使得任意相邻两数不能被3整除 分析: 这题一直卡到最后, 赛后经对面大佬提醒后, 发现统计所有数模三的结果(0,1,2 ...