网站建设朋友圈怎么写,商铺装修找谁,小程序怎么放在桌面,北京网站开发网站开发公司目录
题目链接
一些话 切入点
流程
套路
ac代码 题目链接
116. 飞行员兄弟 - AcWing题库
我草#xff0c;又~在#xff5e;水#xff5e;字#xff5e;数#xff5e;啦#xff01;我草#xff0c;又~在#xff5e;水#xff5e;字#xff5e;数#xff5e;啦…目录
题目链接
一些话 切入点
流程
套路
ac代码 题目链接
116. 飞行员兄弟 - AcWing题库
我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草 一些话
我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草 切入点
// 开关问题每个开关只按一次顺序不重要 // 思路复杂操作繁琐模拟题
求满足条件的情况枚举时储存
我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草 流程
求符合条件的方案字典序和全打开直接从0开始枚举步数严格小的才储存方案空方案则储存
因为开关会影响到上下左右的开关所以不能一层一层递推 // 图较小用2e16个数转化为矩阵每个数位表示开关的操作与否、 // 读入部分直接读入字符数组 // get函数输入ij return i * 4 j // turn _ont函数是就变成-,反之则 // turn_all 函数循环turnone最后turn_one中心点 // doit函数枚举1-1 16-1,备份数组一重循环枚举二进制的数位是1则根据当前的j获取对应的xyturn_all(x,y)把x,y压入vector遍历数组检查是否全关 // 是的话比较vector元素个数和res严格少则替换或者res空则替换 // 输出部分遍历res输出元素1 套路
1.一维数模拟二维数组
前提条件表示一个只有01或其他两种元素的矩阵n*m矩阵开关问题
利用位运算用2^n*m个整数来表示一个只有01或其他两种元素的矩阵n*m矩阵
for(int op 0;op 1 16;op)
运用可以通过这个来枚举开关问题的解法
2.……PII的遍历
for(auto t: res) cout t.first 1 t.second 1 endl; ac代码 // 1955 - 20 06 想
// 06 ~ 24 wa
// 24!30看答案
// 30~37看题解不理解turnall是啥get和位运算
// 开关问题每个开关只按一次顺序不重要
// 码量大操作繁琐模拟题
// 求符合条件的方案字典序和全打开直接从0开始枚举步数严格小的才储存方案空方案则储存
// 因为开关会影响到上下左右的开关所以不能一层一层递推
// 图较小用2e16个数转化为矩阵每个数位表示开关的操作与否、
// 读入部分直接读入字符数组
// get函数输入ij return i * 4 j
// turn _ont函数是就变成-,反之则
// turn_all 函数循环turnone最后turn_one中心点
// doit函数枚举1-1 16-1,备份数组一重循环枚举二进制的数位是1则根据当前的j获取对应的xyturn_all(x,y)把x,y压入vector遍历数组检查是否全关
// 是的话比较vector元素个数和res严格少则替换或者res空则替换
// 输出部分遍历res输出元素1
#include iostream
#include algorithm
#include cstring
#include cstdio
#include vector
using namespace std;
typedef pairint,intPII;
const int N 5;
char g[N][N],backup[N][N];
vectorPIIres;
int get(int i,int j){return i * 4 j;}void turn_one(int i,int j){if(g[i][j] ) g[i][j] -;else g[i][j] ;}
void turn_all(int x,int y){for(int i 0;i 4;i){turn_one(i,y);turn_one(x,i);}turn_one(x,y);
}
void input(){for(int i 0;i 4;i){cin g[i];}
}
void doit(){for(int op 0;op 1 16;op){vectorPIItemp;memcpy(backup,g,sizeof g);for(int i 0;i 4;i){for(int j 0;j 4;j){if(op get(i,j) 1){temp.push_back({i,j});turn_all(i,j);}}}bool flag true;for(int i 0;i 4;i){for(int j 0;j 4;j){if(g[i][j] ) {flag false;}}}if(flag){if(res.empty() || res.size() temp.size()) res temp;}memcpy(g,backup,sizeof g);}
}
void output(){cout res.size() endl;for(auto t: res) cout t.first 1 t.second 1 endl;
}
int main(){input();doit();output();return 0;
} 我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦我草又~在水字数啦