[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 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...
随机推荐
- ubutu14.04无法使用sudo,也无法切换到root用户去解决问题怎么办?
一不小心,修改了/etc/sudoers文件. 惨了. 无法使用sudo了,啥都干不成了. 最最关键的是,也无法用root登录. 本想着要重装系统了. 后来发现了神奇的ubuntu安全模式. 1.重启 ...
- Bing必应地图中国API - 添加实时交通信息
Bing必应地图中国API - 添加实时交通信息 2011-05-24 14:44:58| 分类: Bing&Google|字号 订阅 2009年4月23日,微软必应地图中国API新 ...
- JQuery 日期选择框
一 jeDate日期控件,关于官方的文档请查看: http://www.jayui.com/jedate/ 1 引入js文件 <script type="text/javascr ...
- 4.8 Using Ambiguous Grammars
4.8 Using Ambiguous Grammars It is a fact that every ambiguous grammar fails to be LR and thus is no ...
- win10设置锁屏时间
这里应该修改成自己希望的分钟数 比如120分钟
- E20170606-hm
pipeline n. 管道; 输油管道; 渠道,传递途径; dump vt. 倾倒; 倾销; 丢下,卸下; 摆脱,扔弃; n. 垃圾场; 仓库; 无秩序地累积;
- JavaScript--DOM方法
getElementsByName()方法 返回带有指定名称的节点对象的集合. 语法: document.getElementsByName(name) 与getElementById() 方法不同的 ...
- ACM博弈论总结
一.Bash博弈 1.问题模型:只有一堆n个物品,两人轮流从这堆物品中取物,最多取m个,最后取光者胜. 2.解决思路:当n=m+1时,由于一次最多取m个,无论先取者拿走多少个,后取者都能一次拿走剩余的 ...
- 计算几何值平面扫面poj2932 Coneology
Coneology Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4097 Accepted: 859 Descript ...
- windows 定时任务 设置 安全事项
windows 定时任务 设置 安全事项 1.如果是oaadmin/administrator 创建oracle 数据库. 安全选项如下: 1.只是在用户登录时候运行. sample: data ho ...