这次比赛出的题目大多是中等题,F题是由感而发的.....去杭州玩了N次了,  最坑爹的就是杭州的公交,每次去杭州都要准备几十个硬币专门用来坐公交....

首先建图,求出每两个景点之间的最短路,SPFA和Dij随便了.建出来的图应该是个完全图,每两个景点之间都有一条线路,否则就肯定不能游玩完所有景点了..

然后就是找一条线路经过所有的景点并且最终回到起点使费用最低,这是一个排列的问题,如果数据比较小的话对所有景点标号做一次全排序然后求最小费用就可以了.但对于这题n<15的范围,O(n!)显然超时,就不能这样暴力了~~正确的做法是状态压缩DP,用一个二进制数表示当前旅游过的景点,某位为1代表这个景点旅游过了,为0代表还未旅游.算法复杂度是O(n^2*2^n).

include<cstdio>
#include<string.h>
#include<queue>
#include<algorithm>
#define MAXE 100005
#define MAXN 10005
#define INF 0x3fffffff
using namespace std;
struct edge{int v, w, n;
}e[MAXE*2];
int n, m, k, view[15];
int first[MAXN],es;
int map[16][16], lowpri, d[15][40000], full, ans;
int inq[MAXN], dis[MAXN];
void addedge(int u, int v, int w){e[es].v = v;e[es].w = w;e[es].n = first[u];first[u] = es++;
}
void spfa(int st){queue<int> q;for (int i = 0; i < n; i++)  {inq[i] = 0;dis[i] = (i == st ? 0 : INF);}q.push(st);while (!q.empty()) {int u = q.front(); q.pop();inq[u] = 0;for (int i = first[u]; i != -1; i = e[i].n) {int v = e[i].v;if (dis[v] > dis[u] + e[i].w) {dis[v] = dis[u] + e[i].w;if (!inq[v]) {inq[v] = 1;q.push(v); }  }  }}
}
int dfs(int p, int stat){if (d[p][stat] != -1) return d[p][stat];if (stat == full) return d[p][stat] = map[p][0];int ans = INF, tmp;for(int i = 1; i <= k; i++){if ((stat&(1<<i)) == 0) {tmp = dfs(i, stat ^ (1 << i));if(tmp + map[p][i] < ans)ans = tmp + map[p][i];}  }return d[p][stat] = ans;
}int main(){//freopen("F.in","r",stdin);//freopen("F.out","w",stdout);while (scanf("%d%d%d", &n, &m, &k)!=EOF) {memset(first, -1, sizeof first);es=0;int ts, te, tv;for (int i = 0; i < m; i++) {scanf("%d%d%d", &ts, &te, &tv);addedge(ts, te, tv);addedge(te, ts, tv);}for (int i = 1; i <= k; i++) {scanf("%d", &view[i]); }scanf("%d", &view[0]);memset(map, -1, sizeof map);int hasway = 1;for (int i = 0; i <= k && hasway; i++) {spfa(view[i]); for (int j = 0; j <=k && hasway; j++){map[i][j] = dis[view[j]];if (map[i][j] == INF) hasway = 0;}}if (!hasway) {printf("What a pity\n");   } else {full=(1<<(k+1))-2;for(int i=0;i<=k;i++)for(int j=0;j<=full;j++)d[i][j]=-1;     printf("%d\n",dfs(0, 0));}}return 0;
}

“CSU_BMW正式组建纪念赛”解题报告相关推荐

  1. 2014 ACM/ICPC 北京赛区网络赛解题报告汇总

    首页 算法竞赛» 信息聚合 ONLINE JUDGE 书刊杂志 BLOG» 新闻故事» 招聘信息» 投稿须知 2014 ACM/ICPC 北京赛区网络赛解题报告汇总 九月 21st, 2014 | P ...

  2. 20221126测试赛解题报告

    20221126测试赛解题报告 1.孤独照片 [USACO21DEC] Lonely Photo B 题目描述 Farmer John 最近购入了 NNN 头新的奶牛(3≤N≤5×1053 \le N ...

  3. 清澄11.26测试赛解题报告

    清澄11.26测试赛解题报告 孤独照片 问题描述 Farmer John 最近购入了 N 头新的奶牛(3≤n≤5*105),每头奶牛的品种是更赛牛(Guernsey)或荷斯坦牛(Holstein)之一 ...

  4. WHU校赛2019(网络赛) 解题报告(CCNU_你们好强啊我们都是面包手) Apare_xzc

    WHU校赛2019(网络赛) 解题报告 CCNU_你们好强啊我们都是面包手(xzc zx lj) 战况: 比赛时3题,排名57,现在5题了 题目链接: WHU校赛2019 <-戳这里 以下题目按 ...

  5. 湖南师范大学2021年4月1日愚人赛解题报告与标程

    湖南师范大学2021年4月1日愚人赛解题报告与标程 A 题目描述 标程 B 题目描述 标程 C 题目描述 标程 D 题目描述 解法 标程 E 题目描述 解法 F 题目描述 解法 标程 G 题目描述 标 ...

  6. QLU ACM 2018新生赛解题报告

    QLU ACM 2018 新生赛解题报告 A [1303]约数个数 题目描述 输入 输出 解析 B [1301]Alice and Bob 题目描述 输入 解析 C [1289] 黑白黑 题目描述 输 ...

  7. 10.30 NFLS-NOIP模拟赛 解题报告

    总结:今天去了NOIP模拟赛,其实是几道USACO的经典的题目,第一题和最后一题都有思路,第二题是我一开始写了个spfa,写了一半中途发现应该是矩阵乘法,然后没做完,然后就没有然后了!第二题的暴力都没 ...

  8. 山东科技大学第二届ACM校赛解题报告

    这次校赛的目的,是为了省赛测试各种程序是否有问题. 热身赛的逗比题有点打击我,感觉正式赛应该不会出这种问题.开始的时候直接上了A题,然后大概是第六,前面好多友情队,正式队排名第二. 然后读了读B题,稍 ...

  9. 2011 ACM/ICPC 福州赛区网络赛解题报告

    第一次写网络赛的题解,福州赛区网络赛作为我第一年ACM最后一次网络赛酱油,画了一个很像逗号的句号.....好吧,还得为北京现场赛准备啊准备....... 这次酱油打的很犀利,貌似出第一题很快,之后节奏 ...

最新文章

  1. json 和 table控件
  2. java实现折半查找_java语言之实现折半查找算法
  3. mysql 查询时间之内_MySQL 查询时间段内的数据
  4. Jenkins打卡Day19-Jenkins重启关闭服务
  5. zabbix_server执行window脚本出现中文乱码如何解决
  6. Android 编译时出现r cannot be resolved to a variable
  7. 好消息!电商工具箱API详情接口,更全面
  8. 宝宝起名和姓名打分源码(PHP和JAVA版)
  9. 从裸机到嵌入式Linux—总纲
  10. 【超分辨率】VDSR论文笔记
  11. Android Studio 线性布局Linearlayout的控件位置控制l属性Layout_margin失效问题解决
  12. 每日一言:愿你等待的,终有回答
  13. 安卓开机linux图标,在启动栏制作android studio启动图标
  14. 光刻技术-无掩模高精度激光直写
  15. Ubuntu 和 Debian 的关系
  16. Arduino简易麦轮小车 使用航模遥控器控制
  17. 节日活动发布,选对H5让你在老板面前大放异彩!
  18. 「优知学院」淘宝架构的前世今生(下)
  19. mysql主从搭建、使用mycat实现主从读写分离
  20. python学习之下载百度搜索到的图片(含源代码)

热门文章

  1. 每日一题——最小生成树(哭死)
  2. 511遇见易语言取字节集长度取字节集数据到字节集
  3. 成都待慕电商:抖音生活服务创作者信用分体系上线
  4. jquery 源码分析十一 - Sizzle
  5. 作一份高水准的英文简历
  6. hadoop2.7.0-伪分布5分钟快速搭建
  7. 儿童摄影预约网站系统
  8. Android adb命令选择设备
  9. 致那些奋斗的青春岁月(下)
  10. python循环定义变量