UVA 11825 Hackers' Crackdown
题目大意就是有一个图,破坏一个点同时可以破坏掉相邻点。每个点可以破坏一次,问可以完整破坏几次,点数=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的更多相关文章
- [Uva 11825] Hackers’ Crackdown
Hackers’ Crackdown Input: Standard Input Output: Standard Output Miracle Corporations has a numbe ...
- UVA 11825 Hackers’ Crackdown(集合动态规划 子集枚举)
Hackers’ Crackdown Miracle Corporations has a number of system services running in a distributed com ...
- UVA 11825 Hackers’ Crackdown 状压DP枚举子集势
Hackers’ Crackdown Miracle Corporations has a number of system services running in a distributed com ...
- 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 ...
- UVa 11825 Hackers' Crackdown (状压DP)
题意:给定 n 个计算机的一个关系图,你可以停止每台计算机的一项服务,并且和该计算机相邻的计算机也会终止,问你最多能终止多少服务. 析:这个题意思就是说把 n 台计算机尽可能多的分成一些组,使得每组的 ...
- UVA 11825 - Hackers' Crackdown 状态压缩 dp 枚举子集
UVA 11825 - Hackers' Crackdown 状态压缩 dp 枚举子集 ACM 题目地址:option=com_onlinejudge&Itemid=8&page=sh ...
- uva 11825 Hackers' Crackdown (状压dp,子集枚举)
题目链接:uva 11825 题意: 你是一个黑客,侵入了n台计算机(每台计算机有同样的n种服务),对每台计算机,你能够选择终止一项服务,则他与其相邻的这项服务都终止.你的目标是让很多其它的服务瘫痪( ...
- 【UVA】11825 Hackers' Crackdown(状压dp)
题目 传送门:QWQ 分析 $ n<= 16 $ 显然是状压 然后搞一搞(靠着蓝书yy一下) 代码 #include <bits/stdc++.h> using namespace ...
- Hackers' Crackdown UVA - 11825
Miracle Corporations has a number of system services running in a distributed computer system which ...
随机推荐
- SQL学习入门(一) 概述
从事开发也有一段时间了,期间接触SQL也挺长时间了.许多东西也不是理解的特别深刻,所以写写随笔总结归纳一下. 如有不对的地方,欢迎指正! 一.认识SQL (1) 什么是SQL? 1.SQL 指结构化查 ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十一)redis密码设置、安全设置
警惕 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作>主要是一个简单的介绍,针对redis ...
- netconf、yang和XML关系
netconf是基于xml的网络配置协议,文档RFC6241有详细介绍. yang是为netconf建模的一种数据建模语言.文档RFC2060详细介绍了yang1.0版本,RFC7950介绍了yang ...
- hdu 2669 Romantic 扩展欧几里得
Now tell you two nonnegative integer a and b. Find the nonnegative integer X and integer Y to satisf ...
- Undefined index: HTTP_RAW_POST_DATA的解决办法
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 替换为 $postStr = isset($GLOBALS['HTTP_RAW_POST_DA ...
- 用 Label 控制 Service 的位置 - 每天5分钟玩转 Docker 容器技术(106)
上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode.无论采用 global mode 还是 replicated mode,副本运行在哪些节点 ...
- Java代码操作SVN
package com.leadbank.oprPlatform.util;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import ...
- git实用攻略(二)
最近团队的版本控制从svn切换到了git,虽说已经使用git有2年多了,也写了一个实用攻略,但是github上的项目使用经验和公司内部团队协作的使用经验还有很多不同.补充下新的使用体会. 首先还是看一 ...
- javaweb学习总结(七)——HttpServletResponse对象(一)(转)
转载自 http://www.cnblogs.com/xdp-gacl/p/3789624.html Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对 ...
- 腾讯qq等级计算公式面试题
就三道题大概是: 1. 推算出等级相应的天数 这个还比較简单,公式是:(b=2a+3) a是等级, b是相应的天数 2. 推算出等级总共的天数 先看下规律 等级a 相应天数b 总天数s 1 5 5 ...