[UVA11825]Hackers' Crackdown(状压dp)
题解降智警告
吐槽降智警告
思路降智警告
代码降智警告
题目传送门 洛谷
果然水题做多了连半道难点的都能给咱干蒙...
水题做多了降智 --鲁迅
题目大意:见传送门
心路历程见末尾
正解(大概):
状压
虽然有些难以理解,但是这道题里面有两种集合
一种是第i台电脑所联通的合起来就是S[i](代码内的line[i])
另一种是指已经用了哪几台电脑
思路开始
反正无论如何一定得用几个S[i]拼成一个全集(1<<n)-1
于是就有了
struct Union { int A; }U[<<];//可以凑出来一个全集的几个电脑的集合 int Uarr; void getU(int st,int A,int p) { <<n)-))//这几个电脑的line集合拼成了全集 { U[Uarr].A=A; Uarr++; return; } if(p>=n) return; getU(st|line[p],A|(<<p),p+);//集合里加这个电脑 getU(st,A,p+);//不加 }
好孩子不要急着就看哦(大雾)
(写法比较朴素的说)
好了我们的重点部分已经完事了
(啥你这就完事了?)
确实想到这个就好写了...
如果你做过[NOIP2016]愤怒的小鸟
那这题就更好想到了
好了上代码
#include<cstdio> #include<cstring> #include<algorithm> using std::sort; int max(int a,int b){return a>b?a:b;} int n,m; <<]; ]; struct sta { int s,sc; }s[<<]; int sarr; void getsta(int st,int sc,int p) { if(p>=n) { s[sarr].s=st; s[sarr].sc=sc; sarr++; return; } getsta(st|(<<p),sc+,p+); getsta(st,sc,p+); } struct Union { int A; }U[<<]; int Uarr; void getU(int st,int A,int p) { <<n)-)) { U[Uarr].A=A; Uarr++; return; } if(p>=n) return; getU(st|line[p],A|(<<p),p+); getU(st,A,p+); } bool cmp(sta a,sta b)//状态按照1的数量排序(咱就好这一手) { if(a.sc==b.sc) return a.s<b.s; else return a.sc<b.sc; } void memclr() { memset(line,,sizeof(line)); memset(dp,,sizeof(dp)); Uarr=; sarr=; } int main() { ; while(scanf("%d",&n)!=EOF) { ) ; memclr(); getsta(,,); sort(s,s+sarr,cmp); ;i<n;i++) { scanf("%d",&m); line[i]|=(<<i); ;j<=m;j++) { scanf("%d",&xin); line[i]|=(<<xin); } } getU(,,); ;si<sarr;si++) { ;Ui<Uarr;Ui++) { if((s[si].s&U[Ui].A)==U[Ui].A) { dp[s[si].s]=max(dp[s[si].s],dp[s[si].s^U[Ui].A]+); } } } printf(<<n)-]); } ; }
好孩子要自己思考~
看上去做的十分轻松
实际上
心路历程如下:
一开始:emmmm外层电脑使用状态里面枚举下一个使用每个电脑然后dp里存v和状态...
写完:???
等下等下从下面能继承过来一堆状态啊啊啊
变成(2^n)^k了啊啊啊啊啊
心态爆炸
Ah~(油库里音)
切题后:
啥?子集的子集是3^n?
完了我菜死了
陷入沉思...
3^n*n似乎也会T死
这至少证明了我原先的思路似乎没啥可行性而不是半途而废(什么逻辑)
心态平衡了
Ah~(油库里音)
以上
本题完结
记住
水题做多了降智
我没说过这句话 --鲁迅
[UVA11825]Hackers' Crackdown(状压dp)的更多相关文章
- UVa 11825 Hackers' Crackdown (状压DP)
题意:给定 n 个计算机的一个关系图,你可以停止每台计算机的一项服务,并且和该计算机相邻的计算机也会终止,问你最多能终止多少服务. 析:这个题意思就是说把 n 台计算机尽可能多的分成一些组,使得每组的 ...
- UVA11825 黑客的攻击 Hackers' Crackdown 状压DP,二进制,子集枚举
题目链接Click Here [题目描述] 假如你是一个黑客,侵入了一个有着\(n\)台计算机(编号为\(1.2.3....n\))的网络.一共有\(n\)种服务,每台计算机都运行着所有服务.对于每台 ...
- UVA 11825 Hackers’ Crackdown 状压DP枚举子集势
Hackers’ Crackdown Miracle Corporations has a number of system services running in a distributed com ...
- UVa 11825 (状压DP) Hackers' Crackdown
这是我做状压DP的第一道题,状压里面都是用位运算来完成的,只要耐下心来弄明白每次位运算的含义,还是容易理解的. 题意: 有编号为0~n-1的n台服务器,每台都运行着n中服务,每台服务器还和若干台其他服 ...
- BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3336 Solved: 1936[Submit][ ...
- nefu1109 游戏争霸赛(状压dp)
题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1109 //我们校赛的一个题,状压dp,还在的人用1表示,被淘汰 ...
- poj3311 TSP经典状压dp(Traveling Saleman Problem)
题目链接:http://poj.org/problem?id=3311 题意:一个人到一些地方送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短.最后输出最短距离即可.注意:每一 ...
- [NOIP2016]愤怒的小鸟 D2 T3 状压DP
[NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...
- 【BZOJ2073】[POI2004]PRZ 状压DP
[BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...
随机推荐
- JTabbedPane的LookAndFeel--TabbedPaneUI
在定制JTabbedPane的时候是需要使用到LookAndFeel的,而使用LookAndFeel定制的时候,其实主要是继承BasicTabbedPaneUI. to be continue...
- NPOI设置Excel中的单元格识别为日期
只有月/日/年的格式,才能显示为Date 其他的,都是显示为Custom
- Joseph问题 (线段树)
Joseph问题似乎是入门题,就是那个报数出圈的问题,不过它暴力模拟的复杂度是O(nm)的,如果题目的数据范围达到了30000,那就超时了.怎么用线段树维护呢? 我们可以这么考虑,每次我们其实要查询在 ...
- System.Drawing.Color的几种使用方法
System.Drawing.Color cl = Color.Red; System.Drawing.Color cl = Color.FromArgb(255,0,0); ...
- MySql 5.7 Archive 版本安装失败 解决过程
下载地址 https://dev.mysql.com/downloads/mysql/5.7.html#downloads 按照网络教程: 创建my.ini 文件,并填写配置内容: [mysql] # ...
- 解决phpmyadmin数据文件导入有限制的问题(只能导入2M以下)
修改配置php.ini文件中三个参数: 1.upload_max_filesize 2.memory_limit 3.post_max_size 建议根据实际需要进行设置.
- 慕课网4-6 编程练习:jQuery后排兄弟选择器
4-6 编程练习 结合所学的兄弟选择器" ~ ",实现如下图所示效果: 任务 (1)使用兄弟选择器" ~ "将技术语言的背景色变成红色 (2)使用jQuery的 ...
- Beyond Compare 激活解决办法
问题: 当你使用过一段时间后会提示有问题,需要激活或者什么. 解决办法: 找到这个路径并删除其下Beyond Compare 3文件夹即可正常使用. C:\Users\******\AppData\R ...
- redis 客户端工具 RedisDesktopManager
https://redisdesktop.com/download 可以查看到spring+redis 缓存的数据
- 生成自签名ca 证书 使nginx 支持https
创建服务器私钥,命令会让你输入一个口令:$ openssl genrsa -des3 -out server.key 1024创建签名请求的证书(CSR):$ openssl req -new -ke ...