可将旅行商的路线看作是从n - 1号点出发, 跳着到0号点, 再折返走完之前跳过的点. 想到这个, 暴力就可以得50分.

正解是DP.

f[i][j](i > j)表示, 从i开始跳, 并返回至j所需要的最小花费(从定义上i, j可互换)

因而得到递推式:

f[i + 1][i] = min(f[i + 1][i], f[i][j] + w[j][i + 1])

f[i + 1][j] = min(f[i + 1][j], f[i][j] + w[i][i + 1])

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxN = 1500;
int w[maxN][maxN];
int f[maxN][maxN];
int main()
{
freopen("putnik.in", "r", stdin);
freopen("putnik.out", "w", stdout);
ios::sync_with_stdio(false);
int n;
cin >> n;
for(int i = 0; i < n; i ++)
for(int j = 0; j < n; j ++)
cin >> w[i][j];
memset(f, 127, sizeof(f));
f[0][0] = 0;
for(int i = 0; i < n; i ++)
for(int j = 0; j <= i; j ++)
if(f[i][j] < (int)2e9)
f[i + 1][i] = min(f[i + 1][i], f[i][j] + w[j][i + 1]),
f[i + 1][j] = min(f[i + 1][j], f[i][j] + w[i][i + 1]);
int ans = (int)2e9;
for(int i = 0; i < n; i ++)
ans = min(ans, f[n - 1][i]);
cout << ans;
}

putnik的更多相关文章

随机推荐

  1. luogu2761 软件补丁问题

    状压最短路 #include <iostream> #include <cstring> #include <cstdio> #include <queue& ...

  2. ranorex官网

    youtube FQ看ranorex https://demo.glyptodon.com 虚拟机   安卓实体 ranorex 只支持 Rxbrowser 我想操作安卓机器上的chrome 所以装了 ...

  3. dev c++ 提示没有iostream.h文件

    dev c++ 提示没有iostream.h文件 解决办法路径没有打通最好是这样写:#include <iostream>using namespace std;int main(int ...

  4. Python 协程、IO模型

    1.协程(单线程实现并发)2.I/0模型 2.1阻塞I/O 2.2非阻塞I/O 知识点一:协程 协程的目的:是想要在单线程下实现并发(并发看起来是同时运行的) 并发=多个任务间切换+保存状态(正常情况 ...

  5. Good Bye 2017

    太菜了啊,一不小心就goodbye rating了 A. New Year and Counting Cards time limit per test 1 second memory limit p ...

  6. 九度oj 题目1482:玛雅人的密码 清华大学机试

    题目描述: 玛雅人有一种密码,如果字符串中出现连续的2012四个数字就能解开密码.给一个长度为N的字符串,(2=<N<=13)该字符串中只含有0,1,2三种数字,问这个字符串要移位几次才能 ...

  7. NOJ——1508火烧赤壁2(并查集+启发式合并+逆序加边)

    [1508] 火烧赤壁2 时间限制: 1000 ms 内存限制: 65535 K 问题描述 上次出了一道火烧赤壁的题目给当时的新生,也就是你们的上一届学长们做,那么这次,我又想到了另一个想法. 上次的 ...

  8. NOJ——1627Alex’s Game(II)(尺取)

    [1627] Alex’s Game(II) 时间限制: 2000 ms 内存限制: 65535 K 问题描述 Alex likes to play with one and zero as you ...

  9. [luoguP2763] 试题库问题(最大流)

    传送门 每个类别和它所有的试题连一条权值为1的边. 增加一个超级源点s,s和每个类别连一条权值为选当前类别数量的边. 增加一个超级汇点t,每个试题和t连一条权值为1的边. 求最大流即可. ——代码 # ...

  10. BZOJ4818 [SDOI2017]序列计数 【生成函数 + 快速幂】

    题目 Alice想要得到一个长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数.Alice还希望 ,这n个数中,至少有一个数是质数.Alice想知道,有多少个序列满足她的要求. ...