B. Flag of Berland
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

The flag of Berland is such rectangular field n × m that satisfies following conditions:

  • Flag consists of three colors which correspond to letters 'R', 'G' and 'B'.
  • Flag consists of three equal in width and height stripes, parralel to each other and to sides of the flag. Each stripe has exactly one color.
  • Each color should be used in exactly one stripe.

You are given a field n × m, consisting of characters 'R', 'G' and 'B'. Output "YES" (without quotes) if this field corresponds to correct flag of Berland. Otherwise, print "NO" (without quotes).

Input

The first line contains two integer numbers n and m (1 ≤ n, m ≤ 100) — the sizes of the field.

Each of the following n lines consisting of m characters 'R', 'G' and 'B' — the description of the field.

Output

Print "YES" (without quotes) if the given field corresponds to correct flag of Berland . Otherwise, print "NO" (without quotes).

Examples
input
6 5
RRRRR
RRRRR
BBBBB
BBBBB
GGGGG
GGGGG
output
YES
input
4 3
BRG
BRG
BRG
BRG
output
YES
input
6 7
RRRGGGG
RRRGGGG
RRRGGGG
RRRBBBB
RRRBBBB
RRRBBBB
output
NO
input
4 4
RRRR
RRRR
BBBB
GGGG
output
NO
Note

The field in the third example doesn't have three parralel stripes.

Rows of the field in the fourth example are parralel to each other and to borders. But they have different heights — 2, 1 and 1.

题目大意还不是很好表达。就是看能不能分成均等的三份;

只要遍历一遍就好了。

模拟吧,代码有点长

 1 #include<iostream>
2 #include<stdio.h>
3 using namespace std;
4 char a[105][105];
5 int hang(int n,int m){ //验证行是否分成了三份
6 char fir=a[1][1],sec=a[n/3+1][1],three=a[n][1];
7 if(fir==sec||fir==three||sec==three){
8 return false;
9 }
10 for(int i=1;i<=n;i++){
11 for(int j=1;j<=m;j++){
12 if(i<=n/3){
13 if(a[i][j]!=fir){
14 return false;
15 }
16 }else if(i<=2*(n/3)){
17 if(a[i][j]!=sec){
18 return false;
19 }
20 }else{
21 if(a[i][j]!=three){
22 return false;
23 }
24 }
25 }
26 }
27 return true;
28 }
29 int lie(int n,int m){ //验证列是否分成三份
30 char fir=a[1][1],sec=a[1][m/3+1],three=a[1][m];
31 if(fir==sec||fir==three||sec==three){
32 return false;
33 }
34 for(int i=1;i<=n;i++){
35 for(int j=1;j<=m;j++){
36 if(j<=m/3){
37 if(a[i][j]!=fir){
38 return false;
39 }
40 }else if(j<=2*(m/3)){
41 if(a[i][j]!=sec){
42 return false;
43 }
44 }else{
45 if(a[i][j]!=three){
46 return false;
47 }
48 }
49 }
50 }
51 return true;
52 }
53 int main(){
54 int m,n;
55 cin>>n>>m;
56 for(int i=1;i<=n;i++){
57 for(int j=1;j<=m;j++){
58 cin>>a[i][j];
59 }
60 }
61 if(n%3!=0&&m%3!=0){
62 cout<<"NO"<<endl;
63 }else{
64 if(n%3==0&&m%3==0){
65 if(hang(n,m)||lie(n,m)){
66 cout<<"YES"<<endl;
67 }else{
68 cout<<"NO"<<endl;
69 }
70 }else if(n%3==0){
71 if(hang(n,m)){
72 cout<<"YES"<<endl;
73 }else{
74 cout<<"NO"<<endl;
75 }
76 }else{
77 if(lie(n,m)){
78 cout<<"YES"<<endl;
79 }else{
80 cout<<"NO"<<endl;
81 }
82 }
83 }
84 return 0;
85 }

Educational Codeforces Round 26 Problem B的更多相关文章

  1. Educational Codeforces Round 26

    Educational Codeforces Round 26 困到不行的场,等着中午显示器到了就可以美滋滋了 A. Text Volume time limit per test 1 second ...

  2. CodeForces 837F - Prefix Sums | Educational Codeforces Round 26

    按tutorial打的我血崩,死活挂第四组- - 思路来自FXXL /* CodeForces 837F - Prefix Sums [ 二分,组合数 ] | Educational Codeforc ...

  3. CodeForces - 837E - Vasya's Function | Educational Codeforces Round 26

    /* CodeForces - 837E - Vasya's Function [ 数论 ] | Educational Codeforces Round 26 题意: f(a, 0) = 0; f( ...

  4. CodeForces 837D - Round Subset | Educational Codeforces Round 26

    /* CodeForces 837D - Round Subset [ DP ] | Educational Codeforces Round 26 题意: 选k个数相乘让末尾0最多 分析: 第i个数 ...

  5. Educational Codeforces Round 32 Problem 888C - K-Dominant Character

    1) Link to the problem: http://codeforces.com/contest/888/problem/C 2) Description: You are given a ...

  6. Educational Codeforces Round 26 [ D. Round Subset ] [ E. Vasya's Function ] [ F. Prefix Sums ]

    PROBLEM D - Round Subset 题 OvO http://codeforces.com/contest/837/problem/D 837D 解 DP, dp[i][j]代表已经选择 ...

  7. Educational Codeforces Round 26 B,C

    B. Flag of Berland 链接:http://codeforces.com/contest/837/problem/B 思路:题目要求判断三个字母是否是条纹型的,而且宽和高相同,那么先求出 ...

  8. Educational Codeforces Round 21 Problem E(Codeforces 808E) - 动态规划 - 贪心

    After several latest reforms many tourists are planning to visit Berland, and Berland people underst ...

  9. Educational Codeforces Round 21 Problem D(Codeforces 808D)

    Vasya has an array a consisting of positive integer numbers. Vasya wants to divide this array into t ...

  10. Educational Codeforces Round 21 Problem A - C

    Problem A Lucky Year 题目传送门[here] 题目大意是说,只有一个数字非零的数是幸运的,给出一个数,求下一个幸运的数是多少. 这个幸运的数不是最高位的数字都是零,于是只跟最高位有 ...

随机推荐

  1. MySQL 使用Navicat delete/insert into/update 大量数据表锁死,kill的线程后线程处于killed状态问题解决

    MySQL 使用delete/insert into/update 大量数据表锁死,kill的线程后线程处于killed状态问题解决 实际生产环境问题描述: 使用Navicat备份BigData数据表 ...

  2. 快手根据关键词取商品列表 API 返回值说明

    item_search-根据关键词取商品列表 注册开通 ks.item_search 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secr ...

  3. 完全卸载MySQL服务的方法

    1. 重新运行安装文件,单击remove移除mysql.此时安装目录中的文件没有完全移除,需要手动删除安装目录的Mysql文件夹. 2. 如果MySQL服务没有移除的话,以管理员方式运行cmd命令:s ...

  4. 2023-09-16:用go语言,给你一个整数 n 和一个在范围 [0, n - 1] 以内的整数 p , 它们表示一个长度为 n 且下标从 0 开始的数组 arr , 数组中除了下标为 p 处是 1

    2023-09-16:用go语言,给你一个整数 n 和一个在范围 [0, n - 1] 以内的整数 p , 它们表示一个长度为 n 且下标从 0 开始的数组 arr , 数组中除了下标为 p 处是 1 ...

  5. 「note」原根照抄

    阶(multiplicative order) \(\textbf{Def.}\):\(\delta_m(a)\) 为最小的 \(n\) 使得 \(a^n\equiv 1\pmod m\),其中 \( ...

  6. vue2实现数据聚合【scatter-clustering】组件封装

    实现如下效果: 效果展示:https://code.juejin.cn/pen/7228568245148581943 如果不会请移步到官网的栗子,请点击查看 直接给大家上代码: 整体代码片段 1 & ...

  7. Springboot简单功能示例-4 自定义加密进行登录验证

    springboot-sample 介绍 springboot简单示例 跳转到发行版 查看发行版说明 软件架构(当前发行版使用) springboot hutool-all 非常好的常用java工具库 ...

  8. SQL函数升序Asc,降序Desc使用总结

    关键字-升序Asc及降序Desc的使用语法 对某一结果集按列进行升序或降序排列即:结果集 Order by 列名/数字 Asc/Desc. 一.Asc,Desc排序讲以下5点 1.不写关键字Asc/D ...

  9. 唱衰这么多年,PHP 仍然还是你大爷!

    PHP 是个庞然大物. 尽管有人不断宣称 PHP "即将消亡". 但无法改变的事实是:互联网依然大量依赖 PHP.本文将通过大量的数据和事实告诉你为何 PHP 仍然在统治着互联网, ...

  10. C/C++中的ACM题目输入处理——简单易上手

    这里就不按其他文章的以各种情况为分类方法,而是以方法本身为分类办法.因为有一些方法是不同情况通用的,比如已知数量数字的输入和未知数量数字的输入,其实可以用同一种办法. 输入 C/C++ :scanf正 ...