状态压缩 之 UVA 10944 - Nuts for nuts..

//  [9/19/2014 Sjm]
/*
dis[j][k] := 从 j 点到 k 点的最少步数,由于They can travel in all 8 adjacent direction in one step.故而 dis[j][k] = max( abs(Xj - Xk), abs(Yj - Yk) )f[j][i] := 在 i 状态下,最后收集坚果 j 的最少步数n 代表坚果的数目。。阶段i:按递增顺序枚举状态值 (0 <= i <= 2^n - 1)
状态 :枚举状态 i 中最后被收集的坚果 j (1 <= j <= n, i&(2^(j-1)) != 0)
决策 :枚举状态 i 以外的坚果 k(1 <= k <= n, i&(2^(k-1)) == 0) ,判断在状态 i,最后被收集的坚果为j的情况下,再收集坚果 k ,是否为最优决策。即: f[k][i+2^(k-1)] = min(f[k][i+2^(k-1)], f[j][i] + dis[j][k])求最终解:
枚举 f[j][2^n - 1] + dis[j][0] (1 <= j <= n),
*/
 1 #include <iostream>
 2 #include <cstdlib>
 3 #include <cstdio>
 4 #include <algorithm>
 5 #define INF 0x3f3f3f3f
 6 using namespace std;
 7 int n, dis[20][20], myX, myY, f[20][(1 << 20)];
 8 
 9 struct myNode {
10     int x, y;
11 }node[20];
12 
13 void Init(int i, char str[])
14 {
15     for (int j = 0; j < myY; ++j){
16         if ('#' == str[j]) {
17             node[++n].x = i;
18             node[n].y = j;
19         }
20         else if ('L' == str[j]) {
21             node[0].x = i;
22             node[0].y = j;
23         }
24     }
25 }
26 
27 void getDis() {
28     for (int i = 0; i <= n; ++i) {
29         for (int j = 0; j <= n; ++j) {
30             dis[i][j] = max(abs(node[i].x - node[j].x), abs(node[i].y - node[j].y));
31         }
32     }
33 }
34 
35 void Solve() {
36     int finalState = (1 << n) - 1;
37     for (int j = 1; j <= n; ++j) {
38         for (int i = 0; i <= finalState; ++i) {
39             f[j][i] = INF;
40         }
41     }
42     for (int j = 1; j <= n; ++j) {
43         f[j][1 << (j - 1)] = dis[0][j];
44     }
45     for (int i = 0; i < finalState; ++i) {
46         for (int j = 1; j <= n; ++j) {
47             if (i & (1 << (j - 1))) {
48                 for (int k = 1; k <= n; ++k) {
49                     if (!(i & (1 << (k - 1)))) {
50                         f[k][i + (1 << (k - 1))] = min(f[k][i + (1 << (k - 1))], f[j][i] + dis[j][k]);
51                     }
52                 }
53             }
54         }
55     }
56     int ans = INF;
57     for (int j = 1; j <= n; ++j) {
58         ans = min(ans, f[j][finalState] + dis[j][0]);
59     }
60     printf("%d\n", ans);
61 }
62 
63 int main()
64 {
65     while (~scanf("%d %d", &myX, &myY)) {
66         char str[25];
67         n = 0;
68         for (int i = 0; i < myX; ++i) {
69             scanf("%s", str);
70             Init(i, str);
71         }
72         if (0 == n) {   // 注意无坚果的情况。。
73             printf("0\n");
74             continue;
75         }
76         getDis();
77         Solve();
78     }
79     return 0;
80 }

转载于:https://www.cnblogs.com/shijianming/p/4140800.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对人工神经网络“开刀”,利用神经科学消融法检测人工神经网络

来源&#xff1a;DeepTech深科技摘要&#xff1a;当谈及人工神经网络&#xff0c;黑箱问题总会引起热议&#xff0c;人们对黑箱问题的评价褒贬不一。有人认为黑盒是神经网络的优势&#xff0c;这代表神经网络的自主学习性&#xff0c;代表其自动学习以及自动完善的特性。但大部…

wp8数据存储--独立存储文件 【转】

出自 &#xff1a; http://www.cnblogs.com/MyBeN/p/3339019.html 文章篇幅有点大&#xff0c;建议去源网看看 1.调用手机的独立存储 例如&#xff1a;IsolatedStorageFile storage IsolatedStorageFile.GetUserStoreForApplication() 2.创建独立存储文件流 例如&#xff1a;I…

从车联网到工业智联网

来源&#xff1a;智车科技摘要&#xff1a;本文从工业互联网的典型应用—车联网谈起&#xff0c;从工业网联技术发展过程的视角分析了工业智联网的构架、关键技术和前沿趋势&#xff0c;对智联网视域下的未来智联交通作出了展望。随着智能技术的发展&#xff0c;从工业互联网发…

图像拼接1 特征提取

图像特征提取在图像拼接中占据至关重要的地位&#xff0c;旨在从图像中提取显著特征并用数学语言加以描述。 图像特征包括&#xff1a;特征点、边缘、轮廓、闭合区域以及统计特征等。 一般来说&#xff0c;特征点是指图像中具有某些特性的结构特征&#xff0c;特征点既可以是…

清华发布《AI芯片技术白皮书》:新计算范式,挑战冯诺依曼、CMOS瓶颈

来源&#xff1a;机器人 悦智网摘要&#xff1a;在由北京未来芯片技术高精尖创新中心和清华大学微电子学研究所联合主办的第三届未来芯片论坛上&#xff0c;清华大学正式发布了《人工智能芯片技术白皮书(2018)》。《白皮书》首次整合了国际化的学术和产业资源&#xff0c;紧扣学…

hdu 3944 DP? (Lucas 定理)

仔细观察杨辉三角后可以发现从最高点到第n行第k个数的最短路为c(n1,k); 根据Lucas定理可以求出&#xff0c;一般来说要求答案模去一个质数p且p的范围不大于10^5则可用Lucas. Lucas(n,m,p)cm(n%p,m%p)* Lucas(n/p,m/p,p)Lucas(x,0,p)1;另外注意当k>n/2时&#xff0c;必须令kn…

常用的编码

ASCII码是标准化字符集&#xff0c;使用7个二进制位编码&#xff0c;可以表示128个字符&#xff0c;通常ASCII表示的是英文字母的二进制编码&#xff0c; 例如大写字母A的二进制编码为65&#xff0c;python代码如下&#xff1a; >>> ord(A) 65 >>> chr(65) …

这是一份 AI 界最强年终总结

来源&#xff1a;AI 科技评论圣诞节元旦假期过后&#xff0c;谷歌资深 Fellow、谷歌 AI 负责人 Jeff Dean 代表所有谷歌的研究部门发出了他们的 2018 年度科研研究年终总结。这一年&#xff0c;谷歌的科研人员们在人工智能、量子计算、计算图形学、算法理论、软件系统、TPU、开…

选择、插入、冒泡排序

选择、插入、冒泡三种算是最典型的排序算法了&#xff0c;空间复杂度都为O(1) 选择排序时间复杂度跟初始数据顺序无关&#xff0c;O(n2)&#xff0c;而且还不稳定; 插入排序时间复杂度跟初始数据顺序有关最好O(n),最坏O(n2)&#xff0c;稳定 冒泡排序时间复杂度跟初始数据顺序有…

89页PPT揭秘:人工智能产业爆发的拐点

来源&#xff1a;wpr摘要&#xff1a;如今&#xff0c;人工智能正在以前所未有的速度发展。目前&#xff0c;全球顶尖的IT和互联网公司都加大了对人工智能领域的投入&#xff0c;包括Google、Facebook、微软投入巨大&#xff0c;人工智能进入爆发式增长的拐点。这份关于人工智能…

Linux下如何进行FTP设置

1. 先用rpm -qa| grep vsftpd命令检查是否已经安装&#xff0c;如果ftp没有安装&#xff0c;使用yum -y install vsftpd 安装,(ubuntu 下使用apt-get install vsftpd) 2. service vsftpd start 启动要让FTP每次开机自动启动&#xff0c;运行命令: chkconfig --level 35 vsft…

Python文件拷贝函数

test.txt文件内容如下&#xff1a; one two three four five 代码的功能为把test.txt内容拷贝到copy.txt文件中代码如下&#xff1a; def main():infile open("test.txt", "r")outfile open("copy.txt", "w")countLines countChars…

source insight常用命令--实际使用中比较常用的

以下命令指示个人在实际的使用中比较常用到的相关命令&#xff0c;仅供参考&#xff0c;谢谢合作 ctrlf&#xff1a;搜索关键字 F3&#xff1a;在当前打开的文本中&#xff0c;向上搜索关键字 F4&#xff1a;在当前打开的文本中&#xff0c;向下搜索关键字 ctrlo&#xff1a;快…

医疗健康大数据:应用实例与系统分析

来源&#xff1a;网络大数据1 、概述随着信息技术和物联网技术的发展、个人电脑和智能手机的普及以及社交网络的兴起&#xff0c;人类活动产生的数据正以惊人的速度增长。根据国际数据公司(International DataCorporation&#xff0c;IDC)的报告&#xff0c;仅2011年&#xff0…

RANSAC算法的简单理解

图像拼接中看到了特征匹配的部分&#xff0c;特征匹配主要是特征点的匹配。在特征点匹配的时候&#xff0c;首先进行粗匹配&#xff0c;粗匹配通常是进行一对匹配点进行对比&#xff0c;误差越小越可能是一对匹配点&#xff1b;精匹配方法中&#xff0c;我们可以用到RANSAC(Ran…

IEEE论文:城市大脑,基于互联网大脑模型的智慧城市建设

作者&#xff1a;刘锋 互联网进化论作者 计算机博士前言&#xff1a;基于互联网大脑模型与智慧城市建设的结合&#xff0c;2015年2月在csdn第一次发布文章《基于互联网大脑架构的智慧城市建设探讨》提出了城市大脑的建设方向&#xff0c;地址&#xff1a;https://blog.csdn.net…

vb6 枚举对象属性

Option Explicit引用Library TLIC:\WINDOWS\system32\TLBINF32.DLLTypeLib InformationPrivate Sub Form_Load()Dim oTLB As InterfaceInfo, I As LongSet oTLB TLI.InterfaceInfoFromObject(Me)Debug.Print oTLB.NameFor I 1 To oTLB.Members.CountSelect Case oTLB.Members…

Python利用turtle绘制五角星

绘制用到的参数我们存放在data.txt文件中&#xff0c;data.txt文件内容如下&#xff1a; 300,0,144,1,0,0 300,0,144,0,1,0 300,0,144,0,0,1 300,0,144,1,1,0 300,0,108,0,1,1 184,0,72,1,0,1 184,0,72,0,0,0 184,0,72,0,0,0 184,0,72,0,0,0Python代码如下&#xff1a; # data.…

关于c#静态构造函数

http://baike.baidu.com/view/2634573.htm?fraladdin 在百科上看到C#的新特性静态构造函数&#xff0c;其中提到静态构造函数“不能继承” 今天做了个试验&#xff0c;发现实际上静态构造函数是可以继承的&#xff0c;代码如下&#xff1a; using System; using System.Collec…

Python语言数据类型-----数字和字符串

Python语言的数字类型 整数类型 浮点数类型 复数类型 整数类型与数学中的整数类型概念一致&#xff0c;没有取值范围。 十进制数为 1010,99,-217 十六进制为 0x9a, -0x89 (0x,0X开头表示16进制数) 二进制为 0b010, -0B101(0b,0B开头的表示二进制数) 八进制为 0o123, -0O456(…