官方题解:直接状压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的更多相关文章

  1. HDU5823 : color II

    每种颜色的点集肯定是独立集,因此可以通过$O(2^n)$枚举每个集合判断出每个集合是否只需要一种颜色即可染色. 设$f[i][S]$表示$i$种颜色覆盖$S$这个集合的方案数,假定两个集合可以相交,那 ...

  2. hdu5823(反演dp)

    听说3^n也能水过去.. 其实应该是个经典题,求图染色这个np问题. 把问题拆成独立集来进行dp可以在3^n之内水过去. 拆成独立集的时候就发现,等价与一个经典的反演dp问题 然后复杂度就变成了 n* ...

随机推荐

  1. spring 整合 redis 单机版

    增加spring配置文件: application-jedis.xml <?xml version="1.0" encoding="UTF-8"?> ...

  2. CodeBlocks调试功能快捷教程

    在程序设计中,单步调试能够跟踪程序的执行流程.跟踪过程中,还可以观察变量的变化,从而发现其中存在的问题.单步执行除了可以帮助我们发现设计的程序中存在的问题,对于初学者,还可以帮助我们理解语言的机制. ...

  3. noip模拟赛 大芳的逆行板载

    题目背景 大芳有一个不太好的习惯:在车里养青蛙.青蛙在一个n厘米(11n毫米s)的Van♂杆子上跳来跳去.她时常盯着青蛙看,以至于突然逆行不得不开始躲交叉弹.有一天他突发奇想,在杆子上每1厘米为一个单 ...

  4. mysql中的case when 与if else

    大神说:在sql中,能用if else  就不用case  when 下面来看看,具体为什么,没有搞清楚,如果有大神知道的提供下资料: Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制 ...

  5. bzoj [POI2005]Kos-Dicing 二分+网络流

    [POI2005]Kos-Dicing Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1835  Solved: 661[Submit][Status][ ...

  6. [LeetCode] Sort Colors 对于元素取值有限的数组,只遍历一遍的排序方法

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  7. MSSQL Get Last Monday and Last Sunday

    获取上周的周一和周日 代码: --start of last week , ) --end of last week , )

  8. Android通知栏介绍与适配总结

    由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知栏玩法,谷歌也不得不对其进行更新迭代调整,增加新功能的同时,也在不断地改变样式,试图迎合更 ...

  9. PHP is_null,empty以及isset,unset的区别

    1.empty 判断一个变量是否为“空”.null.false.00.0.’0′.』.为以上值的变量在检测時都将返回true. 2.isset 判断一个变量是否已经设置.0.00.’0′.』.’ ‘. ...

  10. Network of Schools(POJ1326+有向图进行缩点)

    题目链接:http://poj.org/problem?id=1236 题目: 题意:对于n个学校,对于一个系统传给某个学校,那么他会传给他得支援学校.从第二开始,每行给你多个数字,表示第i个学校可以 ...