题目大意就是有一个图,破坏一个点同时可以破坏掉相邻点。每个点可以破坏一次,问可以完整破坏几次,点数=16。

看到16就想到状压什么的。

尝试设状态:用f[i]表示选的情况是i(一个二进制串),至少可以破坏几次。

那么就有这样的转移方式:

1.选走所有人用来破坏一次。

2.选举i的一个子集sub,f[i]=f[sub]+f[i-sub]。

然后发现这题就做完了。

具体做法:把每个人的破坏情况预处理一下,然后枚举全集i。

先全部选,看是否能破坏一层。

然后枚举子集,取max。

枚举子集方式:for(int sub=i;sub;sub=(sub-1)&i)。

一道颇有纪念意义的状压子集DP,复杂度O(3^n)。

#include    <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cstring>
#include <queue>
#include <complex>
#include <stack>
#define LL long long int
#define dob double
#define FILE "11825"
using namespace std; const int N = ;
int bin[],n,can[N],ban[],t; inline int gi(){
int x=,res=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')res*=-;ch=getchar();}
while(ch<=''&&ch>='')x=x*+ch-,ch=getchar();
return x*res;
} int main()
{
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
bin[]=;for(int i=;i<=;++i)bin[i]=bin[i-]*;
while(n=gi()){
memset(can,,sizeof(can));
for(int i=;i<n;++i)ban[i]=bin[i];
for(int i=;i<n;++i)
for(int j=gi();j>=;--j)
ban[i]|=bin[gi()];
for(int opt=;opt<bin[n];++opt){
for(int i=;i<n;++i)if(opt&bin[i])can[opt]|=ban[i];can[opt]/=(bin[n]-);
for(int sub=(opt-)&opt;sub;sub=(sub-)&opt)
can[opt]=max(can[opt],can[sub]+can[opt^sub]);
}
printf("Case %d: %d\n",t,can[bin[n]-]);
}
fclose(stdin);fclose(stdout);
return ;
}

Hackers' Crackdown

UVA 11825 Hackers' Crackdown的更多相关文章

  1. [Uva 11825] Hackers’ Crackdown

    Hackers’ Crackdown  Input: Standard Input Output: Standard Output   Miracle Corporations has a numbe ...

  2. UVA 11825 Hackers’ Crackdown(集合动态规划 子集枚举)

    Hackers’ Crackdown Miracle Corporations has a number of system services running in a distributed com ...

  3. UVA 11825 Hackers’ Crackdown 状压DP枚举子集势

    Hackers’ Crackdown Miracle Corporations has a number of system services running in a distributed com ...

  4. UVa 11825 - Hackers' Crackdown DP, 枚举子集substa = (substa - 1)&sta 难度: 2

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  5. UVa 11825 Hackers' Crackdown (状压DP)

    题意:给定 n 个计算机的一个关系图,你可以停止每台计算机的一项服务,并且和该计算机相邻的计算机也会终止,问你最多能终止多少服务. 析:这个题意思就是说把 n 台计算机尽可能多的分成一些组,使得每组的 ...

  6. UVA 11825 - Hackers&#39; Crackdown 状态压缩 dp 枚举子集

    UVA 11825 - Hackers' Crackdown 状态压缩 dp 枚举子集 ACM 题目地址:option=com_onlinejudge&Itemid=8&page=sh ...

  7. uva 11825 Hackers&#39; Crackdown (状压dp,子集枚举)

    题目链接:uva 11825 题意: 你是一个黑客,侵入了n台计算机(每台计算机有同样的n种服务),对每台计算机,你能够选择终止一项服务,则他与其相邻的这项服务都终止.你的目标是让很多其它的服务瘫痪( ...

  8. 【UVA】11825 Hackers' Crackdown(状压dp)

    题目 传送门:QWQ 分析 $ n<= 16 $ 显然是状压 然后搞一搞(靠着蓝书yy一下) 代码 #include <bits/stdc++.h> using namespace ...

  9. Hackers' Crackdown UVA - 11825

    Miracle Corporations has a number of system services running in a distributed computer system which ...

随机推荐

  1. 《java.util.concurrent 包源码阅读》03 锁

    Condition接口 应用场景:一个线程因为某个condition不满足被挂起,直到该Condition被满足了. 类似与Object的wait/notify,因此Condition对象应该是被多线 ...

  2. Python函数篇(二)之递归函数、匿名函数及高阶函数

    1.全局变量和局部变量 一般定义在程序的最开始的变量称为函数变量,在子程序中定义的变量称为局部变量,可以简单的理解为,无缩进的为全局变量,有缩进的是局部变量,全局变量的作用域是整个程序,而局部变量的作 ...

  3. Glance 镜像服务群集

    #Glance 镜像服务群集 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html#4.Glance 镜像服务群集 ##. ...

  4. AngularJS ng-repeat使用及注意事项

    用法:ng-repeat="extension"; extension(表达式) 定义了如何循环集合. 表达式实例规则: 1. x in records 2. (key,value ...

  5. SubTool 电影字幕下载程序

    项目地址 https://github.com/backtracker/SubTool 程序说明 作为一个高清电影爱好者,找字幕的痛苦懂的人自然会懂.我在网上找了很久,并没有找到好用的字幕下载程序,于 ...

  6. QT之TCP通信

    QT中可以通过TCP协议让服务器和客户端之间行通信.所以下面我就围绕服务器和客户端来写. 这是我么写服务器和客户端的具体流程: A.服务器: 1.创建QTcpServer对象         2.启动 ...

  7. Scala入门系列(五):面向对象之类

    定义类 // 定义类,包含field以及method class HelloWorld { private var name = "Leo" def sayHello() { pr ...

  8. 【MySQL】20个经典面试题,全部答对月薪10k+

    Part2:经典题目 1.MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联: 2.MySQL中myisam与innodb的区别,至少5点 (1).问5点不同: (2).innodb引 ...

  9. Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗

    Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗 零.致谢 感谢BOSS直聘相对权威的招聘信息,使本人有了这次比较有意思的研究之旅. 由于爬虫持续爬取 www.zhipin.com 网 ...

  10. jmeter接口系列:时间戳、加密

    JMeter安装配置 从官网下载JMeter的软件包apache-jmeter-x.x.zip,下载完成之后解压打开jmeter.bat即可. 说明 这里使用的jmeter版本是3.0,jdk版本是j ...