首页 > 其他分享 >状压dp

状压dp

时间:2024-05-03 14:44:15浏览次数:19  
标签:20 val int 状压 ++ 村庄 dp

售货员的难题

题目背景

数据有更改

题目描述

某乡有 $n\ (2\le n\le 20)$ 个村庄,有一个售货员,他要到各个村庄去售货,各村庄之间的路程 $s\ (0<s<1000)$ 是已知的,且 $A$ 村到 $B$ 村与 $B$ 村到 $A$ 村的路大多不同。为了提高效率,他从商店出发到每个村庄一次,然后返回商店所在的村,假设商店所在的村庄为 $1$,他不知道选择什么样的路线才能使所走的路程最短。请你帮他选择一条最短的路。

输入格式

村庄数 $n$ 和各村之间的路程(均是整数)。

第一行,第 $i+1$ 行第 $j$ 个数代表村庄 $i$ 到 $j$ 的单向路径的路程。

输出格式

最短的路程。

样例 #1

样例输入 #1

3
0 2 1
1 0 2
2 1 0

样例输出 #1

3

include <bits/stdc++.h>

using namespace std;
int n;
int g[20][20], dp[1 << 20][20];
int main()
{
memset(dp, 0x3f, sizeof(dp));
cin >> n;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
int val;
cin >> val;
g[i][j] = val;
}
}
dp[1][0] = 0;
for (int s = 1; s < (1 << n); s += 2)
{
for (int v = 0; v < n; v++)
{
if (!((s >> v) & 1))
continue;

        for (int u = 0; u < n; u++)
        {
            if (v == u)
                continue;
            if (!((s >> u & 1)))
                continue;
            dp[s][v] = min(dp[s][v], dp[s ^ (1 << v)][u] + g[u][v]);
        }
    }
}
int ans = 1e9+7;
for (int i = 0; i < n; i++)
    ans = min(ans, dp[(1 << n) - 1][i] + g[i][0]);
cout << ans;
return 0;

}

标签:20,val,int,状压,++,村庄,dp
From: https://www.cnblogs.com/anlan-woaiyuanshen/p/18171201

相关文章

  • 对于 CF1107E 中 dp 状态设计的一点想法
    不太想发到洛谷讨论区,就往这里放了。我觉得现有的题解都没说明白为什么本题的状态和转移能覆盖所有情况,并且感觉也非常不自然,没见过的话感觉挺难发现这么一个东西。然而这个dp其实是可以自然地推导出来的。首先发现这个过程非常难以描述,主要原因在于很难刻画一个局面。然而,如......
  • python3使用dpkt生成PCMA格式rtp流
    操作系统:CentOS7.6_x64Python版本:3.9.12dpkt版本:1.9.8PCMA编码是VoIP通信中常见的格式,今天整理下CentOS7环境下,python3如何使用dpkt生成PCMA格式rtp流的笔记,并提供相关示例代码、运行效果视频和配套文件下载。我将从以下几方面进行展开:背景材料使用dpkt生成PCMA格式rt......
  • m基于CCSDS标准的LDPC编码器的FPGA实现,包含testbench,码长1024,码率0.5
    1.算法仿真效果vivado2019.2仿真结果如下:   2.算法涉及理论知识概要      LDPC码是一种具有稀疏校验矩阵的线性分组码,由RobertG.Gallager在1962年首次提出。它利用图论中的Tanner图来表示其编解码结构,其中节点分为变量节点和校验节点。变量节点对应于消息比特......
  • 【DP】买卖股票的最佳时机III
    题源-之前都是数组存,然后转移状态,这次是直接四个变量,非常神奇-在该问题中,定义了五种状态,分别是:未进行过任何操作、只进行过一次买操作、进行了一次买操作和一次卖操作(完成了一笔交易)、在完成了一笔交易的前提下进行了第二次买操作以及完成了全部两笔交易。-然后,通过状态转移方......
  • sub-1G低功耗soc芯片DP32RF002
    DP32RF002是深圳市动能世纪科技有限公司研制的基于ARMCortex-M0+内核的超低功耗、高性能的、单片集成(G)FSK/OOK无线收发机的32位SoC芯片。工作于200~960MHz范围内,支持灵活可设的数据包格式,支持自动应答和自动重发功能,支持跳频操作,支持FEC功能,同时内部集成了完整的......
  • 【DP】编辑距离
    https://leetcode.cn/problems/edit-distance/description/?envType=study-plan-v2&envId=top-interview-150非常难的一种考虑方式【转载】dp[i][j]代表将word1的前i个字符转换为word2的前j个字符所需的最少步数。因此,根据题目给出的状态转移方程:当word1[i]==wor......
  • Rockchip RK3399 - DRM eDP调试
    ----------------------------------------------------------------------------------------------------------------------------开发板:NanoPC-T4开发板eMMC:16GBLPDDR3:4GB显示屏:15.6英寸HDMI接口显示屏u-boot:2023.04linux:6.3----------------------------------......
  • BZOJ5424 烧桥计划(单调队列优化dp)
    传送门(vjudge)解题思路注意到\(a_i\)的范围很小,是1000~2000之间,于是我们可以直观感受到k一定不会特别大,推一下可以得出k最多大概在四五百左右,于是可以直接考虑dp[i][j]为前i个数里面选了j个分割点,且第i个数是分割点的最小代价。转移要分两种情况讨论:sum[pre+1~i......
  • oracle数据导入导出,备份还原命令expdp&impdp(只导出元数据,不导出表数据,最全,最完善的步
    感谢金龙鱼先生分享,原文来自https://blog.csdn.net/kou869929526/article/details/125791113一,编码要求以及数据库版本要求检查数据库版本(用于决定导出时生成为哪个版本的dmp头文件)selectversionfromv$instance;检查字符集是否一致(字符集不一致,不能导入)selectuserenv(......
  • Surface Pro 4 miniDP转接HDMI 4K显示的问题
    1、我在某东上买了一个支持4k的minidp转hdmi的转接头,可以支持2K显示器。不过直接连接的话2K显示器最高只能设置1080P的分辨率。解决方法:可以先单独让2k显示器显示,设置分辨率为2k,然后再扩展显示,就可以完美使用了,希望有帮助。2、SurfacePro4及其扩展坞上的MiniDisplayPort能否......