当前位置: 首页 > wzjs >正文

刚察县公司网站建设陕西省建设部网站

刚察县公司网站建设,陕西省建设部网站,wordpress新闻爬,门户网站开发软件终于在洛谷上发布题解了QWQ P10447 最短 Hamilton 路径 题解 分析题目: 一张 n n n 个点的带权无向图,求起点 0 0 0 至终点 n − 1 n-1 n−1 的最短 Hamilton 路径(从 0 ∼ n − 1 0\sim n-1 0∼n−1 不重复地经过每个点一次&#xff…

终于在洛谷上发布题解了QWQ

P10447 最短 Hamilton 路径 题解

分析题目:

一张 n n n 个点的带权无向图,求起点 0 0 0 至终点 n − 1 n-1 n1 的最短 Hamilton 路径(从 0 ∼ n − 1 0\sim n-1 0n1 不重复地经过每个点一次)。

初看题目,不难发现这道题是一个状态压缩 dp 的模板题。

状态压缩简介:

状态压缩,字面意思就是把复杂的状态转化成简洁的二进制来表示,可减少时间与空间复杂度。

打个比方,二进制数 01001101 01001101 01001101 表示的意思为:

0 0 0 0 0 0 号节点没有被经过) 1 1 1 1 1 1 号节点已被经过) 00 00 00 2 , 3 2,3 2,3 号节点未经过) 11 11 11 4 , 5 4,5 4,5 号节点经过) 0 0 0 6 6 6 号节点没经过) 1 1 1 7 7 7 号节点已经过)。

( 01001101 ) 2 = ( 77 ) 10 (01001101)_2=(77)_{10} (01001101)2=(77)10,我们只需操作 77 77 77 次即可,简洁明了。

分析题目样例:

5
0 2 4 5 1
2 0 6 5 3
4 6 0 8 3
5 5 8 0 5
1 3 3 5 0

可作图如下:

好啦,分析题目,我们不难想出定义一个 f f f 数组, f i , j f_{i,j} fi,j 表示在 i i i 的状态下(上文已提到)最后经过的节点 j j j 所得的最短 Hamilton 路径。

定义:

int f[MAXM][MAXN];

那么我们该如何进行状态转移呢?

我们可以用三层循环来实现:

for(int i=1;i<(1<<n);i++)//枚举状态{for(int j=0;j<n;j++)//枚举每个点{if(!((i>>j)&1)) continue;//如果点j已经被经历过,就跳过它for(int k=0;k<n;k++)//这里比较难想,意思是在i的状态下已被经过的点的个数if(((i^(1<<j))>>k)&1)f[i][j]=min(f[i][j],f[i^(1<<j)][k]+a[k][j]);//状态转移方程,要么是本身,要么则为以i^(1<<j)为状态的节点k到j,有点类似最短路的floyd}}

最后我们的答案就是 f 2 n − 1 , n − 1 f_{2^{n}-1 , n-1} f2n1,n1

即在状态为 2 n − 1 2^{n}-1 2n1(全被经过了)下的 n − 1 n-1 n1 号节点。

AC Code:

#include<bits/stdc++.h>
using namespace std;
const int MAXN=25,MAXM=(1<<20),inf=0x3f;//定义变量,inf为无限
int n,a[MAXN][MAXN],f[MAXM][MAXN];
int main(){scanf("%d",&n);for(int i=0;i<n;i++)for(int j=0;j<n;j++)scanf("%d",&a[i][j]);//输入无需多嘴memset(f,inf,sizeof(f));//一开始f数组都是无限的f[1][0]=0;//还没开始旅程,为0for(int i=1;i<(1<<n);i++)//枚举状态{for(int j=0;j<n;j++)//枚举每个点{if(!((i>>j)&1)) continue;//经过了for(int k=0;k<n;k++)//上一次经过了哪些点?if(((i^(1<<j))>>k)&1)//枚举从上一个经过的节点走到j节点f[i][j]=min(f[i][j],f[i^(1<<j)][k]+a[k][j]);//状态转移}}printf("%d\n",f[(1<<n)-1][n-1]);//outreturn 0;//完结撒花
}

AC 记录

http://www.dtcms.com/wzjs/565904.html

相关文章:

  • 自己弄个网站河北省中级经济师考试
  • 首次登陆建设银行网站图文解说网页历史记录在哪里
  • 做外汇最好的财经网站网商之窗挂
  • 网站建设哪里实惠福州seo快速排名软件
  • 佛山网站建设哪家评价高西安网站建设创意
  • 网站搭建软件有哪些网站建设声明函
  • 网站开发需求问卷老师让做网站怎么做
  • 专门做中式服装平台的网站岳阳网站开发报价
  • 中国公司查询网站绿色农业网站源码
  • 免费企业建站系统源码wordpress文章摘录
  • 有哪些网站可以做简历知名商城网站建设
  • 沈阳开发网站朗域装饰公司电话
  • asp做的网站asp源代码破解网站后台账号密码
  • 凉山网站建设兰州市七里河建设局网站
  • 外贸网站建设流程手机赚钱
  • 个人网站开发背景及意义十大免费跨境电商平台
  • 网站开发应如何入账wordpress迁移换域名
  • 外国做水吧设计的网站关键词排名公司
  • 网站内链 工具wordpress get_search_form()多个条件查询
  • 黄金网站app免费视频大全武安做网站
  • 怎么建立本地网站网络平台宣传方式有哪些
  • 河南省住房和城乡建设厅门户网站西安建筑网站建设
  • 规范门户网站的建设和管理办法wordpress获取文章中的图片
  • 国外二手手表网站惠州app开发公司
  • 南京汽车企业网站建设青蛙网站建设
  • 贵州省建设厅官方网站官网北京最大的互联网公司
  • 遵义在线网站建设黄页号码是啥
  • 用html建设网站阿里云 wordpress 安装
  • 建设网站要备案吗wordpress 调试插件
  • windows 2008 搭建网站seo sem sns的区别