bzoj 3517: 翻硬币
3517: 翻硬币
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 224 Solved: 168
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
结论:
①将硬币全部翻成正面或全部翻成反面的方法唯一
②将硬币全部翻成正面所需的次数+将硬币全部翻成反面所需的次数==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: 翻硬币相关推荐
- 浅谈 翻硬币游戏【Nim博弈】
ACM博客_kuangbin 博弈-翻硬币游戏 hihoCoder 1172 : 博弈游戏·Nim游戏·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Alice和B ...
- 试题 历届试题 翻硬币(贪心)
试题 历届试题 翻硬币 资源限制 时间限制:1.0s 内存限制:256.0MB Work hard,Play harder. 问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排 ...
- 蓝桥杯 - 翻硬币(贪心)
小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo ...
- 【DP】翻硬币(jzoj 3921)
翻硬币 jzoj 3921 题目大意: 给你一个长度为nnn的当前01串和目标01串,现在你要做mmm此操作,每次操作你要使kkk个不同的位取反,现在问你有多少种方法可以使当前01串变为目标01串 输 ...
- 牛客14355 翻硬币
链接:https://ac.nowcoder.com/acm/problem/14355 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 蓝桥杯历届试题----矩阵翻硬币
矩阵翻硬币 问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵.随后,小明对每一个硬币分别进行一次 Q 操作.对第x行第y列的硬币进行 Q 操作的定义:将所有第 i*x 行,第 j*y 列的硬币进 ...
- 蓝桥杯练习系统历届试题 翻硬币
问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如 ...
- 蓝桥杯试题:矩阵翻硬币
矩阵翻硬币 这是蓝桥杯的一道练习题,题目如下: 问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵. 随后,小明对每一个硬币分别进行一次 Q 操作. 对第x行第y列的硬币进行 Q 操作的定义:将所 ...
- HDU-3537 Mock Turtles型翻硬币游戏
题意:<=10^8不定个硬币,给你n<=100个正面朝上的硬币以及他们所在的位置,可任选1/2/3个硬币反转(不必连续),但要求翻的这1/2/3个硬币中的最右侧的一个是正面朝上的,问先手者 ...
最新文章
- HDU 6035 Colorful Tree(补集思想+树形DP)
- ubuntu 12.04 配置vsftpd 服务,添加虚拟用户,ssl加密
- 如何花两年时间面试一个人
- 规模、性能、弹性全面升级,让天下没有难用的 K8s
- uva 12426 Counting Triangles 计算几何
- html也没锚点,css 锚点定位不了
- Retrofit2.5是如何解析在接口类中定义的请求方法?
- Java实现Google第三方登录
- C#中的泛型和泛型集合
- WebApi系列(从.Net 到 .Net Core)【更新】
- 安卓学习笔记39:浏览网页、网页与安卓通信
- js 设置style属性
- 前端存储 (2) - sessionStorage ,localStorage
- 一个前端博客(7)——事件绑定和移除事件
- Android界面布局基本属性
- 字体和font-family对照表
- 开启本地网易云api接口后端服务器
- 采用泰克示波器TBS2000和TCP0030A电流探头准确评估高速DCDC转换器电感的选择
- matlab教学ppt,matlab教程ppt(完整版).ppt
- mysql sphinx_Sphinx的安装和使用(仅学习)
热门文章
- 学python需要什么基础-Python入门学习需要哪些条件?
- python电脑下载什么软件-python官网有几个下载文件?有什么不同?
- python常用代码总结-Python常用功能函数系列总结(一)
- python3入门代码-Python3零基础自学方法?
- 百度AI长语音识别技术免费开放,调用时长不再受限
- yolov3模型识别不出训练图片_【AI论技】YOLOv3在标的物资产实时管理中的应用
- python的文本编辑geny_android模拟器(genymotion)+appium+python 框架执行基本原理(目前公司自己写的)...
- java标识符_Java标识符的简单介绍
- SpringSecurity系列(四) Spring Security 实现权限树形菜单
- oracle 创建备份目录,Oracle rman创建和自动化备份