116. 飞行员兄弟【二进制枚举】
二进制枚举即可,需要注意的是,这道题和费解的开关
还是有不同点的。
费解的开关枚举第一行就行了,因为它有依赖关系的。
而这个是一个十字形,无那种关系。故直接暴力枚举邓按不按的所有情况即可。
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
string a[10],b[15];
char get(char c)
{if(c=='-') return '+';if(c=='+') return '-';
}
void solve(int x,int y)
{for(int i=0;i<4;i++) b[x][i]=get(b[x][i]),b[i][y]=get(b[i][y]);b[x][y]=get(b[x][y]);
}
int main(void)
{for(int i=0;i<4;i++) cin>>a[i];vector<PII>ans;for(int i=0;i<(1<<16);i++){vector<PII>ve;for(int j=0;j<4;j++) b[j]=a[j];for(int j=0;j<16;j++){if( (i>>j) & 1 ){solve(j/4,j%4);ve.push_back({j/4,j%4});}}bool flag=1;for(int j=0;j<4;j++)for(int k=0;k<4;k++)if(b[j][k]=='+') flag=0;if(flag&&(ans.size()>ve.size()||ans.empty())) ans=ve;}cout<<ans.size()<<endl;for(int i=0;i<ans.size();i++) cout<<ans[i].first+1<<" "<<ans[i].second+1<<'\n';return 0;
}
116. 飞行员兄弟【二进制枚举】相关推荐
- AcWing 116. 飞行员兄弟(二维指数型枚举)
116. 飞行员兄弟 思路: 通过二进制串暴力枚举所有操作情况 从左上到右下扫描二进制串 (当一个答案存在多种操作情况时保证优先级整体从上到下,同行从左到右打开) 把每次的操作坐标存放到ArrayLi ...
- 116. 飞行员兄弟 Java题解
注意:如果存在多种打开冰箱的方式,则按照优先级整体从上到下,同行从左到右打开. 数据范围 1≤i,j≤4 输入样例: -+-- ---- ---- -+-- 输出样例: 6 1 1 1 3 1 4 4 ...
- HDU 5025Saving Tang Monk BFS + 二进制枚举状态
3A的题目,第一次TLE,是因为一次BFS起点到终点状态太多爆掉了时间. 第二次WA,是因为没有枚举蛇的状态. 解体思路: 因为蛇的数目是小于5只的,那就首先枚举是否杀死每只蛇即可. 然后多次BFS, ...
- 飞行员兄弟 Java版
"飞行员兄弟"这个游戏,需要玩家顺利的打开一个拥有16个把手的冰箱. 已知每个把手可以处于以下两种状态之一:打开或关闭.只有当所有把手都打开时,冰箱才会打开.把手可以表示为一个4х ...
- 飞行员兄弟 JAVA题解
"飞行员兄弟"这个游戏,需要玩家顺利的打开一个拥有16个把手的冰箱. 已知每个把手可以处于以下两种状态之一:打开或关闭. 只有当所有把手都打开时,冰箱才会打开. 把手可以表示为一个 ...
- Java实现十字形开关问题(“飞行员兄弟“)
主要通过位运算 "飞行员兄弟"这个游戏,需要玩家顺利的打开一个拥有 16 个把手的冰箱. 已知每个把手可以处于以下两种状态之一:打开或关闭. 只有当所有把手都打开时,冰箱才会打开. ...
- Acwing---116.飞行员兄弟
飞行员兄弟 1.题目 2.基本思想 3.代码实现 1.题目 "飞行员兄弟"这个游戏,需要玩家顺利的打开一个拥有 16 个把手的冰箱. 已知每个把手可以处于以下两种状态之一:打开或关 ...
- HPU组队赛B:问题(二进制枚举)
时间限制1 Second 内存限制 512 Mb 题目描述 你有n个问题,你已经估计了第i个问题的难度为Ci,现在你想使用这些问题去构造一个问题集.比赛的问题集必须包含至少两个问题,而且比赛的总难度必 ...
- BZOJ1688|二进制枚举子集| 状态压缩DP
Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) ...
最新文章
- CUDA学习(六十五)
- Maven多模块打包遇到的问题详解
- 现在公司都不缺人了吗?软件测试工作经历3年居然被坑了?防不胜防
- MUI框架开发HTML5手机APP(一)--搭建第一个手机APP
- 清华大学MBA在职班第一学年第二学期课表
- 7.1 封装(Java包(package)的概念+访问权限修饰符(public/private/protected/default))
- django使用mysql函数_请问django 可以操作mysql函数么?
- Qt学习笔记(十九):QTreeWidget 的常用方法
- 论文篇-----基于机器学习的交通流预测技术的研究与应用
- QT 快捷键 识别小写字母
- vue仿追书神器,vue小说项目源码
- LayaBox---背景拖动
- LVS-NAT基于NFS存储部署Discuz
- 让你永远忘不了的傅里叶变换解析
- 初等数论【整除性篇】之习题证明
- 面试官,怎样实现 Router 框架?
- 一款好用的视频转换gif的小软件——抠抠视频秀
- 成功解决raise ValueError(“Unknown label type: %s“ % repr(ys))ValueError: Unknown label type: (array([24
- html5 a标签,img标签,em和i标签,strong和b标签,q标签
- 交插二五条码(交叉25码)详解