dp

  代码

 #include<cstdio>
const int N = ;
const int P = ;
int n,m,k,cnt[N];
long long f[N],g[N],o[N],dp[N][];
int e[][],i,j,l,a,b;
int check(int x,int y)
{
int i;
for (i=;i<n;i++)
if ((<<i)==x) break;
int tmp=i,ans=;
for (i=;i<n;i++)
if (((<<i)|y)==y)
ans+=e[tmp][i];
return ans;
}
int main()
{
int test;
scanf("%d",&test);
for (int ii=;ii<=test;ii++)
{
scanf("%d%d%d",&n,&m,&l);
o[]=;for (i=;i<=;i++) o[i]=o[i-]*%P;
for (i=;i<n;i++)
for (j=;j<n;j++)
e[i][j]=;
for (i=;i<=m;i++)
{
scanf("%d%d",&a,&b);
a--;b--;
e[a][b]++;
if (a!=b)
e[b][a]++;
}
for (i=;i<(<<n);i++)
cnt[i]=cnt[i-(i&-i)]+check(i&-i,i);
for (i=;i<(<<n);i++)
f[i]=g[i]=;
for (i=;i<(<<n);i++)
{
j=i;
do
{
j=((j-)&i);
if ((j|(i&-i))==j)
g[i]=(g[i]+g[i-j]*f[j])%P;
}
while (j!=i);
f[i]=(o[cnt[i]]-g[i])%P;
(g[i]+=f[i])%P;
}
for (i=;i<(<<n);i++)
for (k=;k<=l;k++)
dp[i][k]=;
dp[][]=;
for (i=;i<(<<n);i++)
{
for (k=;k<=l;k++)
{
j=i;
do
{
j=((j-)&i);
if ((j|(i&-i))==j)
dp[i][k]=(dp[i][k]+dp[i-j][k-]*f[j])%P;
}
while (j!=i);
}
}
printf("Case #%d:\n%I64d\n",ii,(dp[(<<n)-][l]+P)%P);
}
}

hdu5713 K个联通块[2016百度之星复赛B题]的更多相关文章

  1. hdu5715 XOR 游戏 [2016百度之星复赛D题]

     比赛的时候没仔细想,赛后一想这题其实挺简单的,先求出序列的异或前缀和,然后将异或前缀和建出一颗trie树,然后我们可以二分答案,把问题变成判定性问题,判定是否存在一种方案,使得所有的分组的异或和都大 ...

  2. hdu5714 拍照[2016百度之星复赛C题]

    由于船移动的速度都一样,那么对于往一个方向的船相对距离其实是不变的,我们可以把往一个方向移动的船都视作静止,并求出在哪些观测位置可以看到,很明显对于船[x,y,z],当x+z>=y-z的时候,可 ...

  3. [HDU5713]K个联通块

    [HDU5713]K个联通块 题目大意: 有一张\(n(n\le14)\)个点,\(m\)条边无重边的无向图,求有多少个边集,使得删掉边集里的边后,图里恰好有\(k\)个连通块. 思路: 一个显然的动 ...

  4. 2016"百度之星" - 复赛(Astar Round3) 1003 拍照

    拍照 思路:先静态,离线树状数组,分别统计每个点向左向右能看到的船的数量.再枚举整个区间求最大值. 应为人和船都是动态的,假设船往左走,处理每个点看到向左最大船的数量,满足动态条件.就是向左的船一开始 ...

  5. 树上第k大联通块

    题意:求树上第k大联通块 n,k<=1e5 考虑转化为k短路的形式. 也就是要建出一张图是的这条图上每一条S到T的路径都能代表一个联通块. 点分治建图 递归下去,假定每个子树的所有联通块中都可以 ...

  6. K个联通块

    题意: 有一张无重边的无向图, 求有多少个边集,使得删掉边集里的边后,图里恰好有K个联通块. 解法: 考虑dp,$h(i,S)$表示有$i$个联通块,点集为$S$的图的个数,$g(S)$表示点集为S的 ...

  7. 【HDOJ5713】K个联通块(状压DP,计数)

    题意:有一张无重边的无向图, 求有多少个边集,使得删掉边集里的边后,图里恰好有K个连通块. 1≤T≤201≤K≤N≤140≤M≤N∗(N+1)/21≤a,b≤N 思路:From http://blog ...

  8. 2016百度之星 初赛2A ABEF

    只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...

  9. 2016百度之星 资格赛ABCDE

    看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...

随机推荐

  1. AngularJs表单验证

    常用的表单验证指令 1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type="text" requir ...

  2. 点 击 直 接加我QQ的功能

    <a target="_blank" href="tencent://message/?uin=2814920598&Site=&Menu=yes& ...

  3. MySQL支持的数据类型(2)( 日期)

    日期和时间类型 字节 最小值 最大值 date 4 1000-01-01 9999-12-31 datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59 t ...

  4. *cf.4 贪心

    D. Kostya the Sculptor time limit per test 3 seconds memory limit per test 256 megabytes input stand ...

  5. MySQL Cluster搭建与测试

    MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能.和Oracle Real Cluster Ap ...

  6. XmlUtils.java

    package com.vcredit.framework.utils; import java.io.Writer; import org.apache.commons.lang3.StringUt ...

  7. 项目:学生查看自己的作业情况和分数(php)

    <?php include '../includes/db.ini.php'; try { $sql='SELECT work_id,title,work_text,score_value FR ...

  8. 使用数据泵+dblink迁移数据库,适用于本地空间不足的情况

    col name for a40 select name,locks,pins from v$db_object_cache where locks > 0 and pins > 0 an ...

  9. PHPExcel中文开发手册翻译版(2)

    2016年8月18日12:45:14 请注意这个是粗翻译版,仅供参考,不是精校版 精校版后面才会更新 PHPExcel开发者文档 1.目录 2. 4先决条件 2.1.软件要求4 2.2.安装说明4 2 ...

  10. 百度地图 获取两点坐标之间的驾车距离(非直线距离) c#

    百度接口了解: http://lbsyun.baidu.com/index.php?title=webapi/route-matrix-api-v2 起点与终点为多对多关系,如果你只想取两个坐标,那就 ...