若菜acmer感觉自己智商全然被碾压了QAQ~~
题目大意是:输入n,m,给出n*m(n。m<=100)的不是正规的布满棋子的棋盘,求最少改几个棋子能够使得棋盘正规,正规的棋盘必须是每一个相邻的棋子颜色都不同(仅仅有黑白两种,用0,1取代)
比方2*2
00
00
最少须要换2个棋子
10
01最少换0个棋子
3*3
111
111
111
最少换四个棋子
这题我一点思路都没有,全场已经非常多人做出来了。我感觉这题应该是非常难的贪心才对,怎么田大神7分钟就做出来了。。。想啊想。。。
一直到比赛结束都没非常好的思路。。。。
全场非常多人都作出这题目了。赛后问帆哥,点播了一下。瞬时间感觉自己智商已经是集训队里面最低的了,全然被碾压。。。自上次区域赛回来以后一蹶不振。状态一直处于低谷。各种比赛被碾压,在队里被队友压。在外面被外面强队压,我艹艹艹。。。。。好痛苦啊。。
。。。。。
。
。
。。怎么感觉这一年白学了一样。。。
。
。。别人都在变强,我怎么越来越弱啊。
。。
草泥马啊,。。
哎。
。
。。只是痛苦归痛苦,无论怎么说吧,即使认为自己笨,这不会,那也不会,各种被虐,回头擦干眼泪,还是要低头默默A题————这就是我的忍道(2333333)
废话少说。说下这题的正确思路吧:n×m的正规的棋盘。永远仅仅有两种正确的摆放,就是開始是0或者開始是1,然后我们拿给出的不正规的棋盘每一个棋子都和这两个正确的棋盘比較,比較两个总共不同的取当中最小的
还有注意打出01棋盘的时候巧妙的方法:i+j为奇数为0或者为1
为什么我就想不到呢?果然还是智商不行。。。
QAQ。。。多多A题。提高智商(23333)
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int b[150][150]; int a[150][150]; int c[150][150]; int main() { #ifdef xxz freopen("in.txt","r",stdin); #endif // xxz int n,m; while(cin>>n>>m) { for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) cin>>a[i][j]; int ans , num_c, num_b; num_c = num_b = 0; for(int i = 0; i < n ; i++) { for(int j = 0; j < m; j++) { if((i+j)%2 == 1) { b[i][j] = 1; c[i][j] = 0; if(a[i][j] != b[i][j]) num_b++; if(a[i][j] != c[i][j]) num_c++; } else { b[i][j] = 0; c[i][j] = 1; if(a[i][j] != b[i][j]) num_b++; if(a[i][j] != c[i][j]) num_c++; } } } cout<<min(num_b,num_c)<<endl; } return 0; }
posted on 2017-05-14 09:15 cynchanpin 阅读(201) 评论(0) 编辑 收藏 举报