题意:给定连通图,求出连通图的所有子图的颜色数。 一个图的颜色数,指最少的颜色数,给图染色,使得有边相邻的点之间颜色不同。

思路:首先想法是DFS枚举,然后计算颜色,发现对于给定图,求颜色不会求? 毕竟是很乱的无向图。

那么考虑DP:dp[s]=min(dp[s0]+1),s0是s的子集,且满足s^s0是独立集。 那么复杂度是O(3^N);

因为有补集,还可以用反演DP???我第一次遇到。好菜啊,有机会补一下。

#include<bits/stdc++.h>
#define uint unsigned int
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
char c[][]; bool vis[maxn];
int q[maxn],tot,N; uint dp[maxn];
void check(int S)
{
rep(i,,S) vis[i]=,dp[i]=;
dp[]=;
rep(i,,S) {
tot=; bool F=;
rep(j,,N-) if(i&(<<j)) q[++tot]=j;
rep(j,,tot){
if(!F) break;
rep(k,,tot)
if(c[q[j]][q[k]]=='') {
F=; break;
}
}
if(F) vis[i]=;
}
}
int main()
{
int T,S;
scanf("%d",&T);
while(T--){
scanf("%d",&N); S=(<<N)-;
rep(i,,N-) scanf("%s",c[i]);
check(S);
for(int s=;s<=S;s++){
for(int i=s;;i=(i-)&s){
if(vis[i^s]){
dp[s]=min(dp[s],dp[i]+);
}
if(i==) break;
}
}
uint t=,ans=;
for(int i=;i<=S;i++){
t=t*;
ans+=t*dp[i];
}
cout<<ans<<endl;
}
return ;
}

HDU - 5823:color II (状压DP 反演DP)的更多相关文章

  1. hdu 5823 color II 状压dp

    题目链接 给n个点 n<=18. 然后给出它们两两之间是否有边相连. 问你这个图的所有子集,最少要用多少种颜色来染色, 如果两个点相连, 那么这两个点不能染同样的颜色. 先预处理出所有的点独立集 ...

  2. hdu 5823 color II——子集dp(独立集)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5823 独立集染一种颜色.在这个基础上枚举子集来dp. 状压一样地存边真是美妙. 2^32是1ll<& ...

  3. HDU 4336-Card Collector(状压,概率dp)

    题意: 有n种卡片,每包面里面,可能有一张卡片或没有,已知每种卡片在面里出现的概率,求获得n种卡片,需要吃面的包数的期望 分析: n很小,用状压,以前做状压时做过这道题,但概率怎么推的不清楚,现在看来 ...

  4. HDU 5823 color II

    dp[i]表示i子图的最小染色数目. dp[i]=min( dp[i], dp[j]+1 ), j是i的子集,并且j图内的点没有边相连. 高效率枚举i子集的方法:for(int j=i;j;j=(j- ...

  5. hdu 5823 color II —— 子集DP

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5823 看博客:http://www.cnblogs.com/SilverNebula/p/5929550. ...

  6. HDU 5823 color II(FWT)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5823 [题目大意] 定义一张无向图的价值:给每个节点染色使得每条边连接的两个节点颜色不相同的最少颜 ...

  7. hdu 3247 AC自动+状压dp+bfs处理

    Resource Archiver Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Ot ...

  8. hdu 2825 aC自动机+状压dp

    Wireless Password Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. 关灯问题II 状压DP

    关灯问题II 状压DP \(n\)个灯,\(m\)个按钮,每个按钮都会对每个灯有不同影响,问最少多少次使灯熄完. \(n\le 10,m\le 100\) 状压DP的好题,体现了状压的基本套路与二进制 ...

随机推荐

  1. 修复Nginx报错:upstream sent too big header while reading response header from upstream

    在 nginx.conf 的http段,加入下面的配置: proxy_buffer_size 128k; proxy_buffers 32k; proxy_busy_buffers_size 128k ...

  2. SQlL Server ----- 通过年月进行查询

    websit  中的代码. 不修改 对控件进行修改,展示年月 WdatePicker({ dateFmt: 'yyyy-MM', isShowToday: false, isShowClear: fa ...

  3. lua【卤鹅】总结

    转自:https://www.cnblogs.com/reblue520/p/10767428.html 编写一个简单的hello world程序 test.lua 如果觉得简单,可以给一个for循环 ...

  4. python 开机 定时启动

    Windows开机自动运行.py文件1.找到写好的.py文件,例如我的.py文件路径:D:\编程测试文件\untitled\03131105.py 2.选中文件03131105.py,右键——属性—— ...

  5. Python之路【第十七篇】:Python并发编程|协程

    一.协程 协程,又叫微线程,纤程.英文名Coroutine.协程本质上就是一个线程 优点1:协程极高的执行效率.因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线 ...

  6. 使用adb命令对移动设备截图

    步骤: 1)   首先要进入CMD窗口,命令行模式,连接设备. 2)使用screencap 命令,对安卓设备的当前屏幕进行截屏,示例: adb shell screencap -p /sdcard/0 ...

  7. asp.net EFcore配置链接sqlserver

    1. 首先我们先用vs2017 创建一个空的 asp.net core api 项目 2.  在生成的解决方案下在建立一个访问数据库使用的类库CoreApi.Model,注意要选择.netcore下的 ...

  8. SpringBoot使用mybatis,发生:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured

    最近,配置项目,使用SpringBoot2.2.1,配置mybatis访问db,配好后,使用自定义的数据源.启动发生: APPLICATION FAILED TO START ************ ...

  9. C#JsonConvert.DeserializeObject反序列化json字符

    需求:需要把第一个id替换掉,在序列化成json dynamic dyn = Newtonsoft.Json.JsonConvert.DeserializeObject(json); foreach ...

  10. ELK学习笔记之配置logstash消费kafka多个topic并分别生成索引

    0x00 filebeat配置多个topic filebeat.prospectors: - input_type: log encoding: GB2312 # fields_under_root: ...