很明显的状态压缩思想了。把全集分组,枚举每个集合的子集,看一个子集是否能覆盖所有的点,若能,则f[s]=max(f[s],f[s^s0]+1)。即与差集+1比较。

这种枚举集合的思想还是第一次遇到,果然太弱了。。。。~~~~

其中枚举集合

for(s0=s;s0;s0=(s0-1)&s)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;const int N=16;
int pt[1<<N];
int cover[1<<N];
int f[1<<N];int main(){int n,x,icase=0;while(scanf("%d",&n),n){int c,s;for(int i=0;i<n;i++){scanf("%d",&c);s=(1<<i);for(int k=0;k<c;k++){scanf("%d",&x);s|=(1<<x);}pt[i]=s;}memset(cover,0,sizeof(cover));for(int i=0;i<(1<<n);i++){for(int j=0;j<n;j++){if((1<<j)&i){cover[i]|=pt[j];}}}memset(f,0,sizeof(f));for(int s=0;s<(1<<n);s++){f[s]=0;for(int s0=s;s0;s0=(s0-1)&s){if(cover[s0]==(1<<n)-1) f[s]=max(f[s],f[s0^s]+1);}}printf("Case %d: %d\n",++icase,f[(1<<n)-1]);}return 0;
}

  

转载于:https://www.cnblogs.com/jie-dcai/p/4543602.html

UVA 11825 状态压缩DP+子集思想相关推荐

  1. BZOJ1688|二进制枚举子集| 状态压缩DP

    Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) ...

  2. LeetCode 2044. 统计按位或能得到最大值的子集数目(状态压缩DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 . 如果数组 a 可 ...

  3. 状态压缩DP AcWing算法提高课 (详解)

    基础课的状态压缩点这里 基础课中 蒙德里安的梦想 属于 棋盘式状态压缩dp,最短Hamilton路径 属于 集合状态压缩dp 1064. 小国王(棋盘式/基于连通性) 这种棋盘放置类问题,在没有事先知 ...

  4. [NOIP2016]愤怒的小鸟 状态压缩dp

    题目描述 Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形 ...

  5. LeetCode 1879. 两个数组最小的异或值之和(状态压缩DP)

    文章目录 1. 题目 2. 解题 2.1 回溯 2.2 状态压缩DP 1. 题目 给你两个整数数组 nums1 和 nums2 ,它们长度都为 n . 两个数组的 异或值之和 为 (nums1[0] ...

  6. LeetCode 1723. 完成所有工作的最短时间(DFS+剪枝 / 状态压缩DP)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 状态压缩DP 265 / 3871, 前6.85% 前3题题解: LeetCode 5649. 解码异或后的数组(位运算) LeetCode ...

  7. [转]状态压缩dp(状压dp)

    状态压缩动态规划(简称状压dp)是另一类非常典型的动态规划,通常使用在NP问题的小规模求解中,虽然是指数级别的复杂度,但速度比搜索快,其思想非常值得借鉴. 为了更好的理解状压dp,首先介绍位运算相关的 ...

  8. Victor and World(spfa+状态压缩dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 Victor and World Time Limit: 4000/2000 MS (Java/ ...

  9. 第 256 场力扣周赛(状态压缩+dp,二进制子序列的动规、940)

    第 256 场力扣周赛 有事没做,来看一下题 5854. 学生分数的最小差值 题目描述 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整 ...

最新文章

  1. SIFT原理与源码分析 特征检测 描述子
  2. nat端口限制_Cisco ASA 防火墙 NAT - 基本概念
  3. ide硬盘接口图 sata硬盘接口图 SCSI硬盘接口图
  4. Java RMI,Socket,HttpClient
  5. idea无法启动Tomcat
  6. Python3 —— 变量和简单数据类型
  7. (28)FPGA面试技能提升篇(SATA接口)
  8. 51CTO-redis-集群安装以及动态扩容
  9. c++ 友元函数,友元类
  10. Puppet的安装部署
  11. 仿ios桌面vivo_原生万物,生态共赢丨永中移动Office为vivo文档提供定制版解决方案...
  12. 简单html,用CSS设计一个留言板
  13. windriver 自动生成pcie驱动
  14. 可运行的最新的使用scrapy框架爬取链家租房数据
  15. 关于单片机程序设计的几点
  16. 讯飞语音合成 下载音频Java Demo
  17. Fine Dining(最短路应用)
  18. amazon账号关联|我做了这些不在关联了
  19. 回答网友的几个跟帖和感想
  20. X11 关闭屏幕保护

热门文章

  1. python 32bit数据结构_python实现bitmap数据结构详解
  2. mca终端_MCA的完整形式是什么?
  3. Java BufferedReader reset()方法及示例
  4. Java Calendar getActualMaximum()方法与示例
  5. c语言switch为什么要加break,c语言学习笔记 switch case语句为什么要加break
  6. Zoj 2947——Abbreviation
  7. Linux的sort命令用法
  8. Qt控件大小自适应电脑分辨率问题
  9. java中if 运算符_[Java]Java基本语法结构(运算符,流程控制语句,if语句)
  10. ubuntu下修复U盘只读问题