[状态压缩DP] COJ 1129 送货到家

第一道状态压缩DP;

这道题要求一个无向图的最小权回路,要求经过所有点,所以可以任选一个点(这里选0)作为起点,以后的状态f[s, i]表示从0出发到i结束的最小权路径,最终求得f[1<<n-1, k]后要加上w[0, k],然后求最小值:

for k = 0:n-1

  ans = min(f[1<<n-1, k]+w[0, k]);

print(ans);

 1 # include <cstdio>
 2 # include <cstring>
 3  
 4 # define N 15
 5 # define INF 0X1FFFFFFF
 6  
 7 int n;
 8 int f[1<<N][N];
 9 int w[N][N];
10  
11 int min(int x, int y)
12 {
13     return x<y ? x:y;
14 }
15 
16 void print(int n, int s)
17 {
18     for (int i = n-1; i >= 0; --i)
19     {
20         printf((s>>i)&0x1 ? "1":"0");
21     }
22 }
23  
24 int dp(int s, int j)
25 {
26     int &ans = f[s][j];
27     if (ans != -1) return ans;
28     if ((s&(~(1<<j))) == 1) return ans = w[0][j];
29     ans = INF;
30     for (int k = 1; k < n; ++k) if (k!=j && ((s>>k)&0x1))
31     {
32         ans = min(ans, dp(s&(~(1<<j)), k)+w[k][j]);
33     }
34     return ans;
35 }
36  
37 void solve(void)
38 {
39     int ans = INF;
40     //if (n==0){puts("NoAnswer");return;}
41    // if (n==1){puts("0");return;}
42     for (int i = 0; i < (1<<n); ++i)
43         memset(f[i], -1, sizeof(int)*n);
44   
45     f[1][0] = 0;
46     for (int i = 0; i < n; ++i)
47     {
48         ans = min(ans, dp((1<<n)-1, i)+w[0][i]);
49     }    
50     if (ans < INF)
51         printf("%d\n", ans);
52     else
53         printf("NoAnswer\n");
54 }
55  
56 void read_graph(void)
57 {
58     for (int i = 0; i < n; ++i)
59     for (int j = 0; j < n; ++j)
60     {
61         scanf("%d", &w[i][j]);
62         if (w[i][j] == 0 && i!=j)
63             w[j][i] = w[i][j] = INF;
64         else w[j][i] = w[i][j];
65     }      
66 }
67  
68 int main()
69 {
70     while (~scanf("%d", &n))
71     {
72         read_graph();
73         solve();
74     }
75      
76     return 0;
77 }

涉及位运算,多加几个括号,避免出现优先级导致的问题。

转载于:https://www.cnblogs.com/JMDWQ/archive/2012/08/05/2623610.html

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

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

相关文章

模式8--WorkerThread

来至《java多线程设计模式》 类似ThreadPool&#xff0c;预先产生几个worker线程准备工作。 public void startWorkers() {for (int i 0; i < threadPool.length; i) {threadPool[i].start();}} package Sample;public class WorkerThread extends Thread {private final C…

Android Volley框架的使用(二)

此博文源码下载地址 https://github.com/Javen205/VolleyDemo.git 使用请求队列RequestQueue Volley中的Request都需要添加到RequestQueue中才能执行&#xff0c;所以首先需要创建一个RequestQueue RequestQueue Volley.newRequestQueue(mContext); 通常情况在一个应用中需要…

Spring全自动AOP和项目加入jar包

一、jar可以引进项目中&#xff0c;复制到路下后&#xff0c;要add as library&#xff0c;加载到工作空间中才能引入&#xff1b; 也jar包放在硬盘的项目目录外面&#xff0c;可以多个项目引入共用&#xff1a; 二、xml配置 1、aop全自动配置 2、xml装配bean,不是注解方式 3、…

迭代器和yield

2012-08-05©tc庄稼汉 迭代器是一种方法、get 访问器或运算符&#xff0c;它通过使用 yield 关键字对数组或集合类执行自定义迭代。 yield 返回语句会导致源序列中的元素在访问源序列中的下一个元素之前立即返回给调用方。 尽管您以方法的形式编写迭代器&#xff0c;但编译…

中怎样载入选区_ps中快捷大全

使用ps时使用快捷键更方便&#xff0c;操作起来更能提高工作效率&#xff0c;下面给大家总结一下&#xff0c;希望对大家有帮助&#xff0c;当然大家有更好的技巧可以来魔课66网一起交流一下文件设置:Ctrln——新建Ctrlo——打开Ctrlp——打印Ctrls—— 存储Ctrlw——关闭Ctrl …

AspectJ——AOP框架快速入门

一、导包 二、bean.xml配置 三、环绕通知 四&#xff0c;表达式 转载于:https://www.cnblogs.com/wmqiang/p/11617042.html

linux桌面环境应用

为什么80%的码农都做不了架构师&#xff1f;>>> 通常的 Linux 发行版都使用 KDE 或者 GNOME 作为默认的桌面环境。它们都给用户提供了一个原始的并且有吸引力的桌面&#xff0c;并且内置了各式各样的多媒体软件、系统程序、游戏、实用程序、网页开发工具、编程 工具…

[转]C++的坑真的多吗?

http://coolshell.cn/articles/7992.html#jtss-tsina 先说明一下&#xff0c;我不希望本文变成语言争论贴。希望下面的文章能让我们客观理性地了解C这个语言。&#xff08;另&#xff0c;我觉得技术争论不要停留在非黑即白的二元价值观上&#xff0c;这样争论无非就是比谁的嗓门…

python3.5安装scrapy_Python3.5下安装测试Scrapy

1、引言Scrapy框架结构清晰&#xff0c;基于twisted的异步架构可以充分利用计算机资源&#xff0c;是做爬虫必备基础&#xff0c;本文将对Scrapy的安装作介绍。2、安装lxml2.1 下载地址&#xff1a;https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted  选择对应python3.5…

MMC无法创建管理单元

解决方法&#xff1a;经过我多方考证&#xff0c;原来只是一个小小的问题。那就是”环境变量”在作怪 1. 右键单击“我的电脑”&#xff0c;然后单击“属性”。 2. 在“高级”选项卡上&#xff0c;单击“环境变量”。 3. 在“系统变量”下&#xff0c;双击“PATH 环境变量”。…

第一个Sprint冲刺第六天

讨论成员&#xff1a;邵家文、李新、朱浩龙、陈俊金 讨论问题&#xff1a;解决编写代码的问题 讨论地点&#xff1a;宿舍 进展&#xff1a;已开始对代码的编写 转载于:https://www.cnblogs.com/shaojiawen/p/4970305.html

AspectJ基于xml和基于注解

一、基于xml 执行的切入点中具体方法有返回值&#xff0c;则方法结束会立即执行后置通知&#xff0c;然后再执行环绕通知的放行之后的代码&#xff1b; 2、连接点即所有可能的方法&#xff0c;切入点是正真被切的方法&#xff0c;连接点方法名&#xff1a; 其中&#xff0c;只有…

C++之private虚函数

一般我们说虚函数&#xff0c;它的访问级别都是public的&#xff0c;用类对象可以直接调用&#xff0c;这样就可以实现运行时的类型绑定&#xff0c;那如果我们将虚函数私有化会出现什么情况呢&#xff1f; 我们先来看一个非虚函数私有化的例子 class Base { private:void Prin…

M| SQL 导入导出的时候数据库表的主键和自动编号丢失 怎么办

--导入数据时&#xff0c;使用默认选项&#xff0c;会丢失主键、约束、默认值等属性&#xff0c;按如下步骤操作&#xff1a; --> 导出向导 --> 选择数据源 --> 选择目的 --> 指定表复制或查询&#xff1a;不要使用默认选项&#xff0c;选择“在…

设置堆内存大小_jmap和jhat命令行工具的配合使用,更好的掌握堆内存状况

Java的内存映像工具&#xff0c;jmap&#xff0c;Memory Map for Java&#xff0c;用于生成堆转储快照&#xff0c;一般成为heapdump或者dump文件&#xff0c;出了获取dump文件&#xff0c;这个工具还可以查询finalize执行队列&#xff0c;Java堆和永久代的详细信息&#xff0c…

MT-Retina.js

MT-Retina.js Github: MT-Retina.js serve high-resolution images to devices with retina displays. 之前月大总管写的为高分屏提供不同分辨率图像支持的插件&#xff0c;需求变动&#xff0c;增加了语言支持。 Usage add lib & config <script src"dist/retina.…

不同情况通知执行的顺序

1.service方法有返回值 无异常 XML ***************************************1.前置通知...deleteUser2.环绕通知...开启事务...deleteUser通过id删除用户3.后置通知...deleteUser返回值:14.环绕通知....提交事务...最终通知...deleteUser**********************************…

sessionState 配置方案

配置SQL Server Session方法 以下过程是在Win 2003 SP2 IIS 6.0, ASP.NET 2.0, SQL Server 2005下进行的。 1. 安装Session数据库 到Framework目录 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727运行下面的命令: aspnet_regsql.exe -ssadd -sstype c -d [DB] -S [Server] …

Open*** 服务器的搭建

服务介绍直译就是虚拟专用通道&#xff0c;是提供给企业之间或者个人与公司之间安全数据传输的隧道&#xff0c;Open无疑是Linux下开源的先锋&#xff0c;提供了良好的性能和友好的用户GUI。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。实验拓扑图实验环境xuegod 63 …

怎么批量选择目标_全日制专升本一次可以报几个学校?目标院校应该怎么选择?...

很多普通专升本考生们在备考的时候会对报考环节存在疑问&#xff0c;比如&#xff0c;普通专升本可以报几个学校&#xff1f;报考院校怎么选择&#xff1f;下面我们就这两个问题进行解答。想要知道湖北普通专升本考试一次可以报几个院校和专业&#xff0c;我们不妨先来看看《省…