hdu 5823 color II——子集dp(独立集)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5823
独立集染一种颜色。在这个基础上枚举子集来dp。
状压一样地存边真是美妙。
2^32是1ll<<32,不是1<<31。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=,Lm=(<<)+;
const ll mod=(1ll<<);
int T,n,lm,b[N],dp[Lm];
ll ans,sum;
bool inv[Lm],flag;
int calc(int s){int ret=;while(s)ret++,s-=(s&-s);return ret;}
int main()
{
scanf("%d",&T);
while(T--)
{
memset(b,,sizeof b);
scanf("%d",&n);int x;
lm=(<<n);
for(int i=;i<=n;i++)
for(int j=;j<n;j++)
{
scanf("%1d",&x);
if(x)b[i]|=(<<j);
}
for(int s=;s<lm;s++)
{
flag=;
for(int i=;i<=n;i++)
if((s&(<<(i-)))&&(s&b[i]))
{flag=;break;}
inv[s]=flag;
}
ans=;sum=;
for(int s=;s<lm;s++)
{
sum=sum*%mod;
dp[s]=calc(s);
for(int d=s;d;d=((d-)&s))//从s开始,为了:自己就是独立集
if(inv[d])dp[s]=min(dp[s],dp[s^d]+);
ans=(ans+dp[s]*sum)%mod;
}
printf("%lld\n",ans);
}
return ;
}
hdu 5823 color II——子集dp(独立集)的更多相关文章
- hdu 5823 color II —— 子集DP
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5823 看博客:http://www.cnblogs.com/SilverNebula/p/5929550. ...
- hdu 5823 color II 状压dp
题目链接 给n个点 n<=18. 然后给出它们两两之间是否有边相连. 问你这个图的所有子集,最少要用多少种颜色来染色, 如果两个点相连, 那么这两个点不能染同样的颜色. 先预处理出所有的点独立集 ...
- HDU 5823 color II(FWT)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5823 [题目大意] 定义一张无向图的价值:给每个节点染色使得每条边连接的两个节点颜色不相同的最少颜 ...
- 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- ...
- HDU 5823 (状压dp)
Problem color II 题目大意 定义一个无向图的价值为给每个节点染色使得每条边连接的两个节点颜色不同的最少颜色数. 对于给定的一张由n个点组成的无向图,求该图的2^n-1张非空子图的价值. ...
- hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- hdu 1556:Color the ball(线段树,区间更新,经典题)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- HDU 5807 Keep In Touch DP
Keep In Touch Problem Description There are n cities numbered with successive integers from 1 to n ...
- HDU 1003 Max Sum --- 经典DP
HDU 1003 相关链接 HDU 1231题解 题目大意:给定序列个数n及n个数,求该序列的最大连续子序列的和,要求输出最大连续子序列的和以及子序列的首位位置 解题思路:经典DP,可以定义 ...
随机推荐
- 改变 HTML 样式 Object.style.property=new style;
改变 HTML 样式 HTML DOM 允许 JavaScript 改变 HTML 元素的样式.如何改变 HTML 元素的样式呢? 语法: Object.style.property=new styl ...
- Python全栈开发:进度条
import sys import time for i in range(31): # 清空打印内容 sys.stdout.write("\r") # 控制输出样式 sys.st ...
- Clover config.plist Boot部分
<key>Boot</key> <dict> <key>Arguments</key> < nv_disable= kext-dev- ...
- 8年前诞生于淘宝,细数阿里云RPA 的前世今生!
9月10日,踏入55岁的马云正式卸任阿里巴巴董事局主席一职,由阿里巴巴集团CEO张勇接任.公寓创业.西湖论剑.美国敲钟,从成立到登顶中国最值钱的公司,阿里巴巴只用了20年. 阿里云RPA,2011年诞 ...
- poj 3682 King Arthur's Birthday Celebration (期望dp)
传送门 解题思路 第一问比较简单,设$f[i]$表示扔了$i$次正面向上的硬币的期望,那么有转移方程 : $f[i]=f[i]*(1-p)+f[i-1]*p+1$,意思就是$i$次正面向上可以 ...
- springboot导入excel到mysql
@Controller @RequestMapping(path = "/excel") public class ImportController { @Autowired pr ...
- 使用vue-awesome-swiper滑块插件
基于之前写的vue2.0 + vue-cli + webpack 搭建项目( vue-awesome-swiper版本:3.1.3 ,swiper4,如果成功后没报错,但不显示分页样式,可能版本对不上 ...
- 表单单选按钮input[type="radio"]
<!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...
- C++写矩阵的转置
(2019年2月19日注:这篇文章原先发在自己github那边的博客,时间是2017年2月5日) 对于任意非n阶矩阵的转置,用c++应该怎么写代码,思考了一下,发现并没有那么简单,上网找到了一个比较好 ...
- HDU 1069 Monkey and Banana (动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 简单记录一下 思路:把长方体的各种摆法都存到数组里面,然后按照长宽排序,再dp即可 转移方程 d ...