bzoj1647 / P1985 [USACO07OPEN]翻转棋
其实我们只要枚举第一行的状态,后面的所有状态都是可以唯一确定的。
用二进制枚举灰常方便
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 20
int n,m,a[N][N],b[N][N],c[N][N],d[N][N],ans=2e9;
void draw(int x,int y){
b[x][y]^=; c[x][y]=;
b[x+][y]^=; b[x-][y]^=;
b[x][y+]^=; b[x][y-]^=;
}
void find(int x){
int tot=;
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
b[i][j]=a[i][j],c[i][j]=;
for(int i=;i<=m;++i)
if(x&(<<(i-)))
draw(,i),++tot;
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
if(b[i-][j])
draw(i,j),++tot;
if(tot>=ans) return;
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
if(b[i][j]) return;
ans=tot;
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
d[i][j]=c[i][j];
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
scanf("%d",&a[i][j]);
for(int i=,tt=(<<m)-;i<=tt;++i)
find(i);
if(ans==2e9) printf("IMPOSSIBLE");
else{
for(int i=;i<=n;++i,printf("\n"))
for(int j=;j<=m;++j)
printf("%d ",d[i][j]);
}return ;
}
bzoj1647 / P1985 [USACO07OPEN]翻转棋的更多相关文章
- P1985 [USACO07OPEN]翻转棋
题目链接: 翻转棋 题目分析: 先状压/\(dfs\)枚举第一排状态,然后在每个\(1\)下面翻,即确定了第一排就确定了后面的状态 最后验证一下最后一排是不是全0即可 代码: #include< ...
- 题解 P1985 【[USACO07OPEN]翻转棋】
讲讲我的做法 刚开始做这道题的时候,看到\(n<=15\),我这个\(6\)年级的蒟蒻的第1反应是状压\(dp\).貌似不好做.然而,等到我在省中集训的时候,老师的一席话,让我豁然开朗.今天我准 ...
- 洛谷 P1985 翻转棋
P1985 翻转棋 题目描述 农夫约翰知道,聪明的奶牛可以产更多的牛奶.他为奶牛设计了一种智力游戏,名叫翻转棋. 翻转棋可以分成 M × N 个格子,每个格子有两种颜色,一面是黑的,一面是白的. 一旦 ...
- python 翻转棋(othello)
利用上一篇的框架,再写了个翻转棋的程序,为了调试minimax算法,花了两天的时间. 几点改进说明: 拆分成四个文件:board.py,player.py,ai.py,othello.py.使得整个结 ...
- 隔壁信概大作业xjb写——同化棋ATAXX
话说泥萌北大信科啊,助教是有多懒...去年黑白棋今年同化棋,顺带打ai都不用自己写标程... 好吧..我知道泥萌重点在各种sb的辅助操作上..什么悲剧的可以随时暂停载入...有毒吧 [据说泥萌上课没讲 ...
- BestCoder Round #90
有生以来第一场在COGS以外的地方打的比赛.挂成dog了. 主要是没有经验,加之代码能力过弱.还有最后的瞎hack三次,Too Young Too Simple...... 言归正传. (抄一发题解先 ...
- POJ1753Flip Game(DFS + 枚举)
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37050 Accepted: 16122 Descr ...
- poj 1753
翻转棋,注意是翻转周围四个的,不是整行列的 汗-_-! 哥的代码风还是不错的 二进制储存状态 Sample Input bwwb bbwb bwwb bwww Sample Output 4 #in ...
- POJ 1753 Flip Game 状态压缩,暴力 难度:1
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4863 Accepted: 1983 Descript ...
随机推荐
- easyui_2----messager
<script> $.messager.alert("这是头","这是内容"); </script> 必须放在 $(function() ...
- java基础解析系列(一)---String、StringBuffer、StringBuilder
java基础解析系列(一)---String.StringBuffer.StringBuilder 前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现bu ...
- 运行Chromium浏览器无法登录谷歌账号因为缺少google api密钥
管理员身份运行CMD,然后依次输入以下三行内容(因为比较长,最好拷贝,因为某原因粘贴第一行后,我输入了下,结果第一次没成功,可能是输入错误了.): setx GOOGLE_API_KEY " ...
- Linux上Oracle 11g安装步骤图解
Oracle 11g下载地址: http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 选 ...
- mysql jdbc操作
import java.sql.*; import java.util.Map; public class Mysql { public static void main(String[] args) ...
- HDU 1068 Girls And Boys 二分图题解
版权声明:本文作者靖心.靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
- Python 列表 extend() 方法
描述 Python 列表 extend() 方法通过在列表末尾追加可迭代对象中的元素来扩展列表. 语法 extend() 方法语法: L.extend(iterable) 参数 iterable -- ...
- 主成分分析(PCA)算法,K-L变换 角度
主成分分析(PCA)是多元统计分析中用来分析数据的一种方法,它是用一种较少数 量的特征对样本进行描述以达到降低特征空间维数的方法,它的本质实际上是K-L变换.PCA方法最著名的应用应该是在人脸识别中特 ...
- Variational Approximate Inference
图模型(Graphical Models)是一个用来表示概率模型的工具.所谓概率模型,也就是在刻画一组随机变量之间的相互关系.图模型就是用来显式地刻画这些变量之间关系的.在 图模型中,每个变量由图中的 ...
- python中关于不执行if __name__ == '__main__':测试模块的解决
1.新建测试脚本文件: 2.编辑测试脚本 import unittest import requests import json import HTMLTestRunner ur1 = 'http:/ ...