uva 11825 - Hackers' Crackdown dp

简介:

 题意

  有n个节点,每个节点有m_i个邻居,每个人和邻居为一个整体,问最多可以分成几组使得每组并集合为全集

转移方程

复杂度 3^n

/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
int node[20];
int ans[1<<17],cover[1<<17];//cover 预处理所有状态下集合并情况
int n;
int main()
{
    int C=0;
    while(~scanf("%d",&n)&&n)
    {
        int m,i,j,t;
        for(i=0;i<n;i++)
        {
            node[i]=1<<i;
            scanf("%d",&m);
            for(j=0;j<m;j++)
            {
                scanf("%d",&t);
                node[i]|=1<<t;
            }
        }
        int Max=(1<<n)-1,S,S0;
        for(S=1;S<=Max;S++) //预处理
        {
            cover[S]=0;
            for(i=0;i<n;i++)
                if(S&(1<<i))cover[S]|=node[i];
        }
        for(S=1;S<=Max;S++) //dp
        {
            ans[S]=0;
            for(S0=S;S0;S0=(S0-1)&S)
            {
                if(cover[S0]==Max)ans[S]=max(ans[S],ans[S^S0]+1);
            }
        }
        printf("Case %d: %d\n",++C,ans[S-1]);
    }
}




目录
相关文章
|
负载均衡
《从零开始手写RPC框架》电子书升级啦!
大家好,我是冰河~~ 今天跟大家正式宣布一个好消息,冰河的《从零开始手写RPC框架(基础篇)》电子书,升级啦! 这本电子书中包含哪些内容呢?小伙伴们可以直接拉到文末查看获取方式,也可以先听冰河吹一吹这本电子书的内容。
581 0
《从零开始手写RPC框架》电子书升级啦!
|
Android开发
解决圆形进度条ProgressBar的几个问题
Android自带的Progressbar默认就是圆形的,可以通过设置style属性 style="?android:attr/progressBarStyleHorizontal" 复制代码 这样就能变成条状进度条,如下: <ProgressBar android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal"/>
1490 0
|
10月前
|
存储 人工智能 自然语言处理
效率翻倍!2024免费AI流程图生成工具评测
2分钟了解有哪些好用的AI流程图生成工具。
1476 4
效率翻倍!2024免费AI流程图生成工具评测
|
前端开发 安全 JavaScript
CSRF 攻击是什么?如何防范?
CSRF 攻击是什么?如何防范?
344 0
|
传感器 消息中间件 网络协议
嵌入式QT- QT使用MQTT
嵌入式QT- QT使用MQTT
|
监控 网络协议 安全
微服务架构的常见问题和解决思路|学习笔记
快速学习微服务架构的常见问题和解决思路
微服务架构的常见问题和解决思路|学习笔记
|
敏捷开发 人工智能 边缘计算
|
缓存 算法
详细聊聊RecyclerView缓存机制
详细聊聊RecyclerView缓存机制
详细聊聊RecyclerView缓存机制