uva 662
dp +路径输出
- #include <cstdio>
- #include <cstdlib>
- #include <cmath>
- #include <stack>
- #include <vector>
- #include <sstream>
- #include <cstring>
- #include <string>
- #include <map>
- #include <set>
- #include <queue>
- #include <algorithm>
- #include <iostream>
- #define FFI freopen("in.txt", "r", stdin)
- #define maxn 1010
- #define INF 0x3f3f3f3f
- #define inf 10000000
- #define MOD 1000000007
- #define ULL unsigned long long
- #define LL long long
- #define _setm(houge) memset(houge, INF, sizeof(houge))
- #define _setf(houge) memset(houge, -1, sizeof(houge))
- #define _clear(houge) memset(houge, 0, sizeof(houge))
- using namespace std;
- int dp[35][205], n, k;
- int loc[210], w[210][210];
- void fun(int m,int x,int y) {
- if(x == y)
- printf("Depot %d at restaurant %d serves restaurant %d\n", m, x, y);
- else
- printf("Depot %d at restaurant %d serves restaurants %d to %d\n", m, (x+y)/2, x, y);
- }
- void print(int x, int y, int sum) {
- if(x == 1) {
- fun(x, x, y);
- return;
- }
- else {
- for(int i = x; i <= y; ++ i) {
- if(w[i][y] + dp[x-1][i-1] == sum) {
- print(x-1, i-1, sum-w[i][y]);
- fun(x, i, y);
- break;
- }
- }
- }
- }
- int main() {
- FFI;
- int ca = 0;
- while(scanf("%d%d", &n, &k) == 2 && n+k) {
- for(int i = 1; i <= n; ++ i) {
- scanf("%d", &loc[i]);
- }
- _clear(w);
- _setm(dp);
- for(int i = 1; i <= n; ++ i) {
- for(int j = i; j <= n; ++ j) {
- for(int d = i; d <= j; ++ d) {
- w[i][j] += abs(loc[d]-loc[(i+j)/2]);
- }
- }
- }
- for(int i = 1; i <= n; ++ i) dp[1][i] = w[1][i];
- for(int i = 2; i <= k; ++ i) {
- for(int j = n; j >= i; -- j) {
- for(int d = i-1; d <= j; ++ d) {
- dp[i][j] = min(dp[i][j], dp[i-1][d]+w[d+1][j]);
- }
- }
- }
- printf("Chain %d\n", ++ ca);
- print(k, n, dp[k][n]);
- printf("Total distance sum = %d\n\n", dp[k][n]);
- }
- return 0;
- }
uva 662的更多相关文章
- Problem W UVA 662 二十三 Fast Food
Fast Food Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status P ...
- DP(递归打印路径) UVA 662 Fast Food
题目传送门 题意:n个饭店在一条直线上,给了它们的坐标,现在要建造m个停车场,饭店没有停车场的要到最近的停车场,问所有饭店到停车场的最短距离 分析:易得区间(i, j)的最短距离和一定是建在(i + ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
- 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 ...
- UVA - 1625 Color Length[序列DP 代价计算技巧]
UVA - 1625 Color Length 白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束 和模拟赛那道环形DP很想,计算这 ...
随机推荐
- 使用原生JavaScript模拟getElementByClassName .
最近在工作中,由于有一个插件必须使用jquery-pack.js,而这个包又是非常古老的jquery,所以又的函数是无法使用的,例如$()选择器以及parent()都取不到标签的内容. 所以没办法,只 ...
- Win2D 入门教程 VB 中文版 - 防止内存泄漏
避免内存泄漏 本文从微软官方文档翻译 http://microsoft.github.io/Win2D/html/RefCycles.htm 如果文档有问题,可以在 https://github.co ...
- PHP中session和cookie的区别
这个话题无论是系统运维还是PHP开发人员面试时会经常遇到,所以这里也进行一些总结和归纳,session和cookie的具体理论网上比较大,大家googel下均可;系统运维注意区分下session(会话 ...
- js 逻辑运算符、等号运算符
1 逻辑运算符 逻辑运算只有2个结果,一个为true,一个为false. 1.且&& ★ 两个表达式为true的时候,结果为true. ------------------------ ...
- ImportError: pycurl: libcurl link-time ssl backend (nss) is different
reference pip uninstall pycurl export PYCURL_SSL_LIBRARY=nss easy_install pycurl
- modify django app models.py adn settings.py
from django.db import models from django.contrib import admin # from personal import models class Us ...
- java内存模型(线程独占部分)
线程独占部分 1.你了解Java的内存模型吗? 内存简介 有内核空间.用户空间(java是运行在用户空间上) 32位系统--->最大的访问内存大小是4G 62位系统--->最大的访问内存大 ...
- FreeMarker与SSH项目整合流程
FreeMarker与SSH项目整合流程 学习了SSH之后,一般为了减少数据库的压力,会使用FreeMarker来生成静态HTML页面.下面简单说一下FreeMarker与SSH项目的整合全过程~ 前 ...
- python3.x Day6 IO多路复用
IO多路复用import asyncio 这个是异步IO模块 这个还不知道怎么用 select poll epoll 都是IO多路复用 windows 仅支持select linux2.6以后 支持e ...
- 2017acm南宁现场赛 J题 Rearrangement
题意: 给定一个2 * n的矩阵, 和 2 * n 个数, 问能不能通过重排列, 使得任意相邻两数不能被3整除 分析: 这题一直卡到最后, 赛后经对面大佬提醒后, 发现统计所有数模三的结果(0,1,2 ...