#include <bits/stdc++.h>
using namespace std;
/*
题目大意:
给定n个村庄,和一个距离矩阵,问从1出发,经过所有点一次,再返回1,需要的最短路程是多少。
思路:
经典TSP问题。
*/
typedef long long ll;
typedef pair<int, int> pii;
const int INF = 0x3f3f3f3f;
const double eps = 1e-6;
const double pi = acos(-1.0);
int n;
int G[25][25];
int dp[1 << 20][20];
int main()
{
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
scanf("%d", &G[i][j]);
}
}
memset(dp, 0x3f, sizeof(dp));
dp[1][0] = 0;
for(int i = 1; i < (1 << n); i++)
{
if((i & 1) == 0) continue;
for(int j = 0; j < n; j++)
{
if((i & (1 << j)) == 0) continue;
for(int k = 0; k < n; k++)
{
if((i & (1 << k)) == 0)
{
dp[i | (1 << k)][k] = min(dp[i | (1 << k)][k], dp[i][j] + G[j][k]);
}
}
}
}
int ans = INF;
for(int i = 1; i < n; i++)
{
ans = min(ans, dp[(1 << n) - 1][i] + G[i][0]);
}
printf("%d\n", ans);
return 0;
}
相关推荐
方案设计之亿级排行榜方案设计
该方案通过 “Redis Zset 为核心 + 分治策略为骨架 + 多级优化为细节”,在亿级用户场景下实现了:本质是将 “亿级大问题” 拆解为 “千万级小问题”,用分布式思想和精细化设计平衡性能、可用性与成本。
洛谷 1171 售货员的难题 状压DP 解题报告
题目描述某乡有n个村庄(1输入输出格式输入格式:村庄数n和各村之间的路程(均是整数)。输出格式:最短的路程。输入输出样例输入样例#1:3 0 2 1 1 0 2 2 1 0输出样例#1:3 说明输入解释3 {村庄数}0 2 1 {村庄1到各村的路程}1 0 2 {村庄2到各村的路程}2 1 0 {村庄3到各村的路程}思路看到20想到状压。 这里DP[i][j]DP[i][j]表示i情况下走
告别SquareLine!用免费的NXP GUI-Guider为海思3516AV300开发LVGL界面(附完整移植流程)
本文详细介绍了如何利用免费的NXP GUI-Guider工具为海思Hi3516AV300开发LVGL界面,包括环境配置、代码移植和性能优化等全流程实战指南。特别针对二维码组件缺失等常见问题提供解决方案,帮助开发者零成本构建高效嵌入式GUI系统。
【洛谷P1171】售货员的难题【状压DP】
状压DP
Windows 10/11下彻底卸载Chrome的终极指南(附一键清理注册表脚本)
本文提供了一份在Windows 10/11系统中彻底卸载Google Chrome浏览器的终极指南。针对标准卸载后用户数据与注册表项残留的问题,文章详细介绍了从应用程序层、用户数据层到系统集成层的三层深度清理方法,并重点提供了安全高效的注册表清理脚本,确保浏览器所有痕迹被完全移除,解决重装冲突并释放磁盘空间。
MagicDraw小白必看:BDD图中模块的5种属性详解(含SysML v1.6最新端口配置指南)
本文面向MagicDraw初学者,详细解析SysML BDD图中模块的五种核心结构属性,包括组成部分、引用、值、约束属性及端口。重点阐述了SysML v1.6中端口设计的范式转移,对比了完整端口与代理端口的区别与应用场景,并通过实战案例指导如何利用代理端口进行清晰的接口定义与系统架构设计。
洛谷 P1171 售货员的难题
题目描述 某乡有n个村庄( 1 输入输出样例 输入样例#1 3 0 2 1 1 0 2 2 1 0 输出样例#1 3 说明 输入解释 3 {村庄数} 0 2 1 {村庄1到各村的路程} 1 0 2 {村庄2到各村的路程} 2 1 0 {村庄3到各村的路程} 题目分析 这道题大致是两种做法,一种是用搜索,加点剪枝.另一种是用状压DP.(目前还不太会状压DP...
7、Python高光谱分析工具(PyHAT)简介
Python高光谱分析工具(PyHAT)是一个开源、跨平台的Python库及图形用户界面,用于行星光谱数据的可视化与分析。它支持多种高光谱传感器数据,如火星勘测轨道飞行器的CRISM、月船1号的M3以及SELENE Kaguya SP点光谱仪,提供预处理、衍生产品生成、统计学习和机器学习分析功能。PyHAT基于Pandas和NumPy构建,兼容Jupyter和QGIS环境,旨在解决现有光谱分析方法缺乏开源实现、难以探索性分析和算法分散的问题。其模块化架构涵盖数据输入/输出、通用光谱变换、测绘与点观测工具及高
洛谷状压DP做题记录
P2915 [USACO08NOV]奶牛混合起来Mixed Up 题面 确实是状压的入门题 用dp[i][j] 表示以i结尾,状态为j时的方案数,代码如下: #include<bits/stdc++.h> using namespace std; const int maxn=1e6+7; const int N=20; int n,k; int s[ma...
【用unity实现100个游戏之1】制作类元气骑士、挺进地牢——俯视角射击游戏多种射击效果(二)(附源码)
这篇文章我们将继续实现曲线射击与两种不需要实体子弹的射击方式 源码在文章末尾。
X线DR医学图像 --- DR医用滤线栅及摩尔纹详解 (二) 摩尔纹的产生机理
1,横向摩尔纹的表现 2,纵向摩尔纹的表现 3,摩尔纹在pitch = 143μm(注:pitch为采样间隔/周期)的FPD上的表现。 4,摩尔纹的危害(严重的影响了临床诊断) 5,摩尔纹对胸片肺部肺纹理的破坏 6,滤线栅的频率(滤线栅生产厂家的产品参数)。判断摩尔纹产生的重要依据之一 7,DR平板探测器的采样频率/空间极限分辨率 l.........
P1171 售货员的难题 - 状压DP【最短Hamilton路径】
P1171 售货员的难题 Sol: 最短Hamilton路径,经典的NPC问题,小数据可以通过状压DP 实现。 状态:\(f[i][j]\)表示当前在第i号点,且已经过的点的状态为j 时的最短Hamilton路径。 阶段:若以点为阶段,由于会从点i转移到点i+1,还可能从i+1转移到i-1,不具有无后效性,因此我们考虑以二进制状态为阶段进行转移。 决策:考虑由哪一个点转移而来。 转移:\...
零基础学simulink仿真建模--使用Simulink来构建一个混合动力无人机中燃料电池与锂电池协同控制的仿真模型
延长飞行时间:燃料电池的能量密度高于锂电池,适合长时间稳定供电。提高功率密度:锂电池能够快速响应瞬时高功率需求,比如起飞和加速阶段。优化能源管理:通过有效的能量管理系统,可以根据实际需求动态调整燃料电池和锂电池的工作状态,从而提高整体效率。通过上述步骤,我们简要介绍了如何基于Simulink实现混合动力无人机中燃料电池与锂电池协同控制的仿真模型。
洛谷P1171 售货员的难题(状压DP)
题目描述: 某乡有n个村庄(1<n≤20),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且A村到B村与B村到A村的路大多不同。为了提高效率,他从商店出发到每个村庄一次,然后返回商店所在的村,假设商店所在的村庄为1,他不知道选择什么样的路线才能使所走的路程最短。请你帮他选择一条最短的路。 分析: n很小,而且哪个村去过与没去过都可以用二进制1...
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
洛谷P1171_状压dp
dp[i][j]:状态为i,当前到达节点是j的最短路径 状态转移方程:dp[(1<< j)|i][j] = Min(dp[(1<< j)|i][j], dp[i][k]+a[k][j]); 宏定义的min比stl快 #include <cstdio> #include <cstring> #include <algorithm> #...
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
状压 DP 详解
状压 DP 其实约等于一个 DP 的小技巧,一般应用在处理一个或多个集合的问题中(因为状压 DP 的下标就是一个集合),而且在nnn太大的时候建议不要使用这种方法。(如果你不懂,那么就继续往下看。好吧你本来就不懂。
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
洛谷P1171 售货员的难题【状压DP】
状态压缩;状压DP
洛谷 P1171 售货员的难题 【状压dp】
题目描述 某乡有n个村庄(1 输入输出格式 输入格式: 村庄数n和各村之间的路程(均是整数)。 输出格式: 最短的路程。 输入输出样例 输入样例#1: 复制 3 0 2 1 1 0 2 2 1 0 输出样例#1: 复制 3 说明 输入解释 3 {村庄数} 0 2 1 {村庄1到各村的路程} 1 0 2 {村庄2到各村的路程
洛谷P1171 售货员的难题 Tsp问题
洛谷P1171 售货员的难题 状压DP 1 #include <cstdio> 2 #define For(i,j,k) for(int i=j;i<=k;i++) 3 #define min(a,b) ((a) < (b) ? (a) : (b)) 4 using namespace std ; 5 6 const int N = 21...
洛谷P1171 售货员的难题
题目描述某乡有n个村庄(1< n <20),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0< s <1000)是已知的,且A村到B村与B村到A村的路大多不同。为了提高效率,他从商店出发到每个村庄一次,然后返回商店所在的村,假设商店所在的村庄为1,他不知道选择什么样的路线才能使所走的路程最短。请你帮他选择一条最短的路。 输入输出格式 输入格式:村庄数n和各村之间的路程(均是整数)。输出
洛谷P3226-集合选数(构造+状压dp)
题意:洛谷P3226 分析: 很巧妙的构造题! 构造思路:构造一个矩阵,矩阵的每行的元素都是前一行元素的222倍,每列的元素都是前一列的333倍。 例如: 1,3,9,271,3,9,271,3,9,27 2,6,18,542,6,18,542,6,18,54 4,12,36,1084,12,36,1084,12,36,108 观察这个矩阵可以发现,如果选取了一个数,那么这个数的上下左右就不能取了...
一类单位转移的状压 dp
经典状态压缩 dp,看到n特别小就可以考虑二进制状态相关算法了。除了状态之间用位运算进行合并(我们已经做过许多类似的题目),减去某一位,实现状态之间的转移算是很常用的 trick 了。这算是我学到的第一个状压 dp 方法了,。
DP大家族——关于DP的梳理
本文总结了动态规划(DP)的基本概念和实现方法,包括一维和二维DP的应用。DP的核心思想是利用已知状态推导新状态,主要实现方式为递推和递归(记忆化搜索)。文章通过斐波那契数列、最大连续子序列和(一维DP)、最长上升子序列(LIS)及其优化方法,以及二维DP中的“马拦过河卒”问题等经典例题,详细讲解了DP的解题思路和优化技巧。此外,还介绍了空间优化方法如滚动数组,并展示了不同场景下DP的具体应用,帮助读者逐步掌握动态规划的基础知识和解题策略。
2018.07.18 洛谷P1171 售货员的难题(状压dp)
传送门 感觉是一道经典的状压dp,随便写了一发卡了卡常数开了个O(2)O(2)O(2)优化水过。。。 我直接用dp[i][j]dp[i][j]dp[i][j]表示当前在第i个点,现在点的选取状况是j(二进制表示状态)。 这样的话直接位运算枚举出可以前去的点,然后转移状态。边界是所有点都被取过一遍。 代码如下: #include&lt;bits/stdc++.h&gt; using n...
洛谷 P1171:售货员的难题 ← 状态压缩DP + 最短 Hamilton 回路
本题的本质是求有向图的最小权值哈密顿回路。算法要求从村庄 1 出发,不重复走遍所有村庄,最后回到村庄 1,求最小的总路程。但是,题目给出的 n=20 时,全排列有 20! ≈ 2.433×10¹⁸ 种路线,就算剪枝,也不可能跑完,必然超时(TLE)。
1100



被折叠的 条评论
为什么被折叠?



