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. SK 简化流行编程语言对 生成式AI 应用开发的支持

    Semantic Kernel[1] 是一个将大型语言模型(LLM)与流行的编程语言相结合的SDK. Microsoft将Semantic Kernel(简称SK)称为轻量级SDK,支持AI LLM的 ...

  2. 千呼万唤始出来 JDK 21 LTS, 久等了

    平地起惊雷!!! 目录 英雄的迟暮 大人时代变了 JDK 21 LTS 前 JAVA并发编程模型 JDK 21 LTS 中的 JAVA 并发编程模型 虚拟线程 VS 线程池 The Last 你可以称 ...

  3. 一些常见小程序的UI设计分享

    外卖优惠券小程序的UI设计 电子商城系统UI分享 A B C

  4. 如何在linux(Ubuntu)下安装unity(Unity engine游戏引擎)

    如果直接从unity官网下载unityhub的deb包,直接安装有可能出现unityhub打不开/打开缓慢/无法登陆/无法申请密钥等问题. 正解:从Unity官方源下载unity 1.先添加unity ...

  5. calico网络异常,不健康

    解决calico/node is not ready: BIRD is not ready: BGP not established withxxx calico有一个没有ready,查了一下是没有发 ...

  6. 详述Java内存屏障,透彻理解volatile

    一般来说内存屏障分为两层:编译器屏障和CPU屏障,前者只在编译期生效,目的是防止编译器生成乱序的内存访问指令:后者通过插入或修改特定的CPU指令,在运行时防止内存访问指令乱序执行. 下面简单说一下这两 ...

  7. 【pwn】[SWPUCTF 2021 新生赛]nc签到 --shell过滤字符

    附件下载打开: import os art = '''    ((  "####@@!!$$    ))       `#####@@!$$`  ))    ((  '####@!!$:  ...

  8. Doxygen 的学习

    https://dongzhixiao.blog.csdn.net/article/details/52190696 来自转载

  9. .NET快速对接极光消息推送

    什么是消息推送? 很多手机APP会不定时的给用户推送消息,例如一些新闻APP会给用户推送用户可能感兴趣的新闻,或者APP有更新了,会给用户推送是否选择更新的消息等等,这就是所谓的"消息推送& ...

  10. Ubuntu 20.04 使用 socat 转发特定端口

    安装socat apt install socat 根据需求确定要转发的端口 比如,我的需求是监听IPv6的某一TCP端口,并转发至局域网内某一特定主机,可以使用以下命令: socat TCP6-LI ...