CF_127E reader Display
这道题其实找到规律之后其实不难,和破损的键盘一样,都有点递推转移的感觉
题意:
你可以进行这样一次操作:选一个点,然后把这个点横切竖切直到正对角线上面的点,全部翻转过来,问你要进行多少次操作才能把所有的点都翻转过来
思路:
多次模拟之后可以发现最右上方的点仅能是选择自己才能翻转,之后与这个相邻的点变成了两个最右上方,而这两个点和刚才那个点一样仅能由自己翻转
还有一个要注意的这个只能影响对角线一侧的
所以只要在对角线一侧一直从最右边上到下遍历翻转就好了
Description
After years of hard work scientists invented an absolutely new e-reader display. The new display has a larger resolution, consumes less energy and its production is cheaper. And besides, one can bend it. The only inconvenience is highly unusual management.
For that very reason the developers decided to leave the e-readers' software to programmers.
The display is represented by n × n square of pixels, each of which can be either black or white. The display rows are numbered with integers from 1 to n upside
down, the columns are numbered with integers from 1 to n from the left to the right. The display can perform commands like "x, y".
When a traditional display fulfills such command, it simply inverts a color of (x, y), where x is the row number and y is
the column number. But in our new display every pixel that belongs to at least one of the segments (x, x) - (x, y)and (y, y) - (x, y) (both
ends of both segments are included) inverts a color.
For example, if initially a display 5 × 5 in size is absolutely white, then the sequence of commands (1, 4), (3, 5), (5, 1), (3, 3)leads
to the following changes:
You are an e-reader software programmer and you should calculate minimal number of commands needed to display the picture. You can regard all display pixels as initially white.
Input
The first line contains number n (1 ≤ n ≤ 2000).
Next n lines contain n characters each: the description of the picture that needs to be shown. "0"
represents the white color and "1" represents the black color.
Output
Print one integer z — the least number of commands needed to display the picture.
Sample Input
5
01110
10010
10001
10011
11110
4<pre name="code" class="cpp">#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<queue>
#include<cstdlib>
#include<algorithm>
#include<stack>
#include<map>
#include<queue>
#include<vector>
using namespace std;
char mp[2048][2048];
int flagr[2048],flagc[2048];
int n,cnt;
void print(){
for(int i=0;i<n;i++)
cout<<mp[i]<<endl;
cout<<"*****************"<<endl;
cout<<endl;
}
void search(){ // print();
for(int i=0;i<n;i++){
for(int j=n-1;j>i;j--){
if((mp[i][j]-'0'+flagr[i]+flagc[j])&1){
mp[i][j]='0';
flagc[j]++,flagr[i]++,cnt++;
}
mp[i][j]='0';
}
} // 0 -> 1, 1 -> 0, '0' = 48;
// (mp[i][i] - '0' + flagr[i] +flagc[i] )%2
for(int i=0;i<n;i++){
mp[i][i]=(mp[i][i] - '0' + flagr[i] +flagc[i] )%2 +48;
}
memset(flagr,0,sizeof flagr);
memset(flagc,0,sizeof flagc);
for(int i=n-1;i>=0;i--){
for(int j=0;j<i;j++){
if((mp[i][j]-'0'+flagr[i]+flagc[j])&1){
// print();
flagc[j]++,flagr[i]++,cnt++;
}
mp[i][j]='0';
}
}
for(int i=0;i<n;i++)
if((mp[i][i] - '0' + flagr[i] +flagc[i] )%2) cnt++;
}
int main(){
//freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
cin>>n;
for(int i = 0;i < n;i++){
scanf("%s",mp[i]);
}
search();
printf("%d\n",cnt);
return 0;
}
CF_127E reader Display的更多相关文章
- 设备管理 USB ID
发现个USB ID站点,对于做设备管理识别的小伙伴特别实用 http://www.linux-usb.org/usb.ids 附录: # # List of USB ID's # # Maintain ...
- Display PDF in browser | Acrobat, Reader XI
点这个链接查看详细的解决办法 http://helpx.adobe.com/acrobat/using/display-pdf-browser-acrobat-xi.html When you cli ...
- TRichTextBox – A universal RichTextBox which can display animated images and more
TRichTextBox – A universal RichTextBox which can display animated images and more trestan, 7 Dec 201 ...
- RFID 读写器 Reader Writer Cloner
RFID读写器的工作原理 RFID的数据采集以读写器为主导,RFID读写器是一种通过无线通信,实现对标签识别和内存数据的读出和写入操作的装置. 读写器又称为阅读器或读头(Reader).查询器(Int ...
- [CareerCup] 8.5 Online Book Reader System 在线读书系统
8.5 Design the data structures for an online book reader system. 这道题OOB的题让我们设计一个在线读书系统,还是没有任何提示,所以发挥 ...
- RFID Reader 线路图收集
This 125 kHz RFID reader http://www.serasidis.gr/circuits/RFID_reader/125kHz_RFID_reader.htm http:// ...
- RFIDler - An open source Software Defined RFID Reader/Writer/Emulator
https://www.kickstarter.com/projects/1708444109/rfidler-a-software-defined-rfid-reader-writer-emul h ...
- Drag & Drop and File Reader
参考 : http://www.html5rocks.com/zh/tutorials/file/dndfiles/ http://blog.csdn.net/rnzuozuo/article/det ...
- Adobe® Reader®.插件开发
Thank you for your interest in developing a plug-in for Adobe® Reader®. To build an Adobe Reader plu ...
随机推荐
- Nginx+Tomcat Session 无效问题
omcat 和 Nginx 是相互独立的,在创建 Session 的时候,会根据部署的 Path 作为 Session Cookie 的 Path 路径,原则就是解决 Session Path 路径问 ...
- Selenium:八种元素定位方法
前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...
- spring data jpa 一对多查询
在一对多关系中,我们习惯把一的一方称之为主表,把多的一方称之为从表.在数据库中建立一对多的关系,需要使用数据库的外键约束. 什么是外键? 指的是从表中有一列,取值参照主表的主键,这一列就是外键. pa ...
- 59.Target Sum(目标和)
Level: Medium 题目描述: You are given a list of non-negative integers, a1, a2, ..., an, and a target, ...
- 45.Sort List(链表排序)
Level: Medium 题目描述: Sort a linked list in O(n log n) time using constant space complexity. Example ...
- vue中关于checkbox数据绑定v-model
vue.js为开发者提供了很多便利的指令,其中v-model用于表单的数据绑定很常见, 下面是最常见的例子: <div id='myApp'> <input type=&qu ...
- Springboot2.x整合Redis(一)
备注: springboto整合redis依赖于spring-boot-starter-data-redis这个jar 一,项目环境和依赖 1.POM.xml配置 <parent> < ...
- size - 列出段节大小和总共大小
总览 (SYNOPSIS) size [-A|-B|--format=compatibility] [--help] [-d|-o|-x|--radix=number] [--target=bfdna ...
- python时间日期处理
一.模块介绍: 1.time模块接近操作系统,模块中的大多数函数是调用了所在平台C library的同名函数,部分函数式平台相关的:基于Unix Timestamp,能表述的日期范围被限定在 1970 ...
- Ansible--03 ansible 变量
目录 Ansible 变量 变量概述 定义变量的方式 如何定义变量 Ansible变量优先级测试 变量注册 ansibl e层级定义变量 facts缓存 Ansible 变量 变量概述 变量提供了便捷 ...