3517: 翻硬币

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 224  Solved: 168
[Submit][Status][Discuss]

Description

有一个nn列的棋盘,每个格子上都有一个硬币,且n为偶数。每个硬币要么是正面朝上,要么是反面朝上。每次操作你可以选定一个格子(x,y),然后将第x行和第y列的所有硬币都翻面。求将所有硬币都变成同一个面最少需要的操作数。

Input

第一行包含一个正整数n
接下来n行,每行包含一个长度为n的01字符串,表示棋盘上硬币的状态。

Output

仅包含一行,为最少需要的操作数。

Sample Input

4
0101
1000
0010
0101

Sample Output

2

结论:

①将硬币全部翻成正面或全部翻成反面的方法唯一

②将硬币全部翻成正面所需的次数+将硬币全部翻成反面所需的次数==n*n

③对于每个格子(x, y)只有翻1次和不翻两种情况,翻2次没有任何意义

所以这题可以转成:将所有的1全部变成0需要多少步?

P(i,j):是否对格子(i,j)进行翻转操作

a[i][j]:输入数据,硬币的状态

那么可得P(i,1)^P(i,2)^…^P(i,n)^P(1,j)^P(2,j)^…^P(n,j)==a[i][j]

我们设F(i,j)==P(i,1)^P(i,2)^…^P(i,n)^P(1,j)^P(2,j)^…^P(n,j)

因为n为偶数,又有a^a==0,所以可得

F(i,1)^F(i,2)^…^F(i,n)^F(1,j)^F(2,j)^…^F(n,j)==P(i,j)==a[i][1]^a[i][2]^…^a[i][n]^a[1][j]^a[2][j]^…^a[n][j]

求出x[i]为a[i][1]^a[i][2]^…^a[i][n],y[j]=a[1][j]^a[2][j]^…^a[n][j]

那么P(i,j)==x[i]^y[j]^a[i][j]

最后所有的P(i,j)加起来就是答案

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[1005][1005], x[1005], y[1005];
int main(void)
{int n, i, j, ans;while(scanf("%d", &n)!=EOF){memset(x, 0, sizeof(x));memset(y, 0, sizeof(y));for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%1d", &a[i][j]);x[i] ^= a[i][j], y[j] ^= a[i][j];}}ans = 0;for(i=1;i<=n;i++){for(j=1;j<=n;j++)ans += x[i]^y[j]^a[i][j];}printf("%d\n", min(ans, n*n-ans));}return 0;
}

bzoj 3517: 翻硬币相关推荐

  1. 浅谈 翻硬币游戏【Nim博弈】

    ACM博客_kuangbin 博弈-翻硬币游戏 hihoCoder 1172 : 博弈游戏·Nim游戏·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Alice和B ...

  2. 试题 历届试题 翻硬币(贪心)

    试题 历届试题 翻硬币 资源限制 时间限制:1.0s 内存限制:256.0MB Work hard,Play harder. 问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排 ...

  3. 蓝桥杯 - 翻硬币(贪心)

    小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo        ...

  4. 【DP】翻硬币(jzoj 3921)

    翻硬币 jzoj 3921 题目大意: 给你一个长度为nnn的当前01串和目标01串,现在你要做mmm此操作,每次操作你要使kkk个不同的位取反,现在问你有多少种方法可以使当前01串变为目标01串 输 ...

  5. 牛客14355 翻硬币

    链接:https://ac.nowcoder.com/acm/problem/14355 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  6. 蓝桥杯历届试题----矩阵翻硬币

    矩阵翻硬币 问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵.随后,小明对每一个硬币分别进行一次 Q 操作.对第x行第y列的硬币进行 Q 操作的定义:将所有第 i*x 行,第 j*y 列的硬币进 ...

  7. 蓝桥杯练习系统历届试题 翻硬币

    问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如 ...

  8. 蓝桥杯试题:矩阵翻硬币

    矩阵翻硬币 这是蓝桥杯的一道练习题,题目如下: 问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵. 随后,小明对每一个硬币分别进行一次 Q 操作. 对第x行第y列的硬币进行 Q 操作的定义:将所 ...

  9. HDU-3537 Mock Turtles型翻硬币游戏

    题意:<=10^8不定个硬币,给你n<=100个正面朝上的硬币以及他们所在的位置,可任选1/2/3个硬币反转(不必连续),但要求翻的这1/2/3个硬币中的最右侧的一个是正面朝上的,问先手者 ...

最新文章

  1. HDU 6035 Colorful Tree(补集思想+树形DP)
  2. ubuntu 12.04 配置vsftpd 服务,添加虚拟用户,ssl加密
  3. 如何花两年时间面试一个人
  4. 规模、性能、弹性全面升级,让天下没有难用的 K8s
  5. uva 12426 Counting Triangles 计算几何
  6. html也没锚点,css 锚点定位不了
  7. Retrofit2.5是如何解析在接口类中定义的请求方法?
  8. Java实现Google第三方登录
  9. C#中的泛型和泛型集合
  10. WebApi系列(从.Net 到 .Net Core)【更新】
  11. 安卓学习笔记39:浏览网页、网页与安卓通信
  12. js 设置style属性
  13. 前端存储 (2) - sessionStorage ,localStorage
  14. 一个前端博客(7)——事件绑定和移除事件
  15. Android界面布局基本属性
  16. 字体和font-family对照表
  17. 开启本地网易云api接口后端服务器
  18. 采用泰克示波器TBS2000和TCP0030A电流探头准确评估高速DCDC转换器电感的选择
  19. matlab教学ppt,matlab教程ppt(完整版).ppt
  20. mysql sphinx_Sphinx的安装和使用(仅学习)

热门文章

  1. 学python需要什么基础-Python入门学习需要哪些条件?
  2. python电脑下载什么软件-python官网有几个下载文件?有什么不同?
  3. python常用代码总结-Python常用功能函数系列总结(一)
  4. python3入门代码-Python3零基础自学方法?
  5. 百度AI长语音识别技术免费开放,调用时长不再受限
  6. yolov3模型识别不出训练图片_【AI论技】YOLOv3在标的物资产实时管理中的应用
  7. python的文本编辑geny_android模拟器(genymotion)+appium+python 框架执行基本原理(目前公司自己写的)...
  8. java标识符_Java标识符的简单介绍
  9. SpringSecurity系列(四) Spring Security 实现权限树形菜单
  10. oracle 创建备份目录,Oracle rman创建和自动化备份