hdu5823
官方题解:直接状压dp就行了,f[S]表示点集S的色数,枚举子集转移(子集是独立集)。这样是3^n的。
这样就可以过了……(独立集就是点互相没有连边)
学到了一个穷举子集的简便写法
for (int j=i; j; j=(j-1)&i)
#include<bits/stdc++.h> using namespace std;
int f[],q[],n,t;
bool v[];
char a[][];
unsigned int d[]; void dfs(int i,int st,bool ff)
{
if (i==n) v[st]=ff;
else {
dfs(i+,st,ff);
if (ff)
{
for (int j=; j<=t; j++)
if (a[q[j]][i]=='') {ff=;break;}
}
q[++t]=i;
dfs(i+,st|(<<i),ff);
t--;
}
} int main()
{
int cas;
scanf("%d",&cas);
d[]=;
for (int i=; i<(<<); i++) d[i]=d[i-]*;
while (cas--)
{
scanf("%d",&n);
for (int i=; i<n; i++)
scanf("%s",a[i]);
int m=<<n;t=;
memset(v,,sizeof(v));
dfs(,,);
for (int i=; i<m; i++) f[i]=n;
f[]=;
for (int i=; i<m; i++)
for (int j=i; j; j=(j-)&i)
if (v[j]) f[i]=min(f[i],f[i-j]+);
unsigned int ans=;
for (int i=; i<m; i++) ans+=d[i]*f[i];
printf("%u\n",ans);
}
}
hdu5823的更多相关文章
- HDU5823 : color II
每种颜色的点集肯定是独立集,因此可以通过$O(2^n)$枚举每个集合判断出每个集合是否只需要一种颜色即可染色. 设$f[i][S]$表示$i$种颜色覆盖$S$这个集合的方案数,假定两个集合可以相交,那 ...
- hdu5823(反演dp)
听说3^n也能水过去.. 其实应该是个经典题,求图染色这个np问题. 把问题拆成独立集来进行dp可以在3^n之内水过去. 拆成独立集的时候就发现,等价与一个经典的反演dp问题 然后复杂度就变成了 n* ...
随机推荐
- [LeetCode] 21. Merge Two Sorted Lists ☆
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- 【Android】完善Android学习(三:API 3.0)
备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...
- redis常用数据结构解析
Redis是一个开源的Key-Value存储引擎,它支持string.hash.list.set和sorted set等多种值类型.由于其卓越的性能表现.丰富的数据类型及稳定性,广泛用于各种需要k/v ...
- 工作笔记 --->新疆统计分析添加市场管理员相关功能笔记
先上一张大致需求的图 表信息 点击首页 “管理站点”时打开一个窗口 <a href="javascript:void(0);" onclick="javascrip ...
- 【NOIP】提高组2012 借教室
[算法]线段树||二分+前缀和 [题解]线段树记录区间加值和区间最大值. #include<cstdio> #include<algorithm> using namespac ...
- 【51NOD-0】1118 机器人走方格
[算法]DP #include<cstdio> #include<algorithm> using namespace std; ,maxn=; int f[maxn][max ...
- Python 关于时间和日期函数使用 -- (转)
python中关于时间和日期函数有time和datatime 1.获取当前时间的两种方法: import datetime,time now = time.strftime("%Y-%m ...
- adb操作指令大全
adb是什么?:adb的全称为Android Debug Bridge,就是起到调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试android程序,说白了就是debug工具.a ...
- openboot的项目
http://docs.oracle.com/cd/E19201-01/821-0901-10/OK_OBP.html https://www.openfirmware.info/OpenBIOS h ...
- 简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环)
简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环) http://www.cnblogs.com/M18-BlankBox/p/5881700.html