• RCC 2017 Qual 1 Mail.Ru, April 2, 2017 Problem B. Painting the Wall


    题意:给一个n*m(<=100)的图,图中0表示台灯,1表示空地,以台灯和墙作为边界,问能否使用k种使得联通的线段上没有重复的颜色

    分析:只要连续的空地不超过k个就必然存在一个解,可以选择如下构造,假设n=5,m=5,k=3

    1 2 3 1 2

    2 3 1 2 3

    3 1 2 3 1

    1 2 3 1 2

    2 3 1 2 3

    这样,把灯的位置都换为0,如果检测到没有连续的超过k的线段,那么这就是一个可行解

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn=1e2+5;
     4 int g[maxn][maxn],res[maxn][maxn];
     5 int t,n,m,k;
     6 
     7 void init(){
     8     for(int i=1;i<=n;i++){
     9         res[i][1]=(res[i-1][1]+1)%k;
    10         for(int j=2;j<=m;j++)res[i][j]=(res[i][j-1]+1)%k;
    11     }
    12 }
    13 
    14 void print(int x,int y){
    15     if(!g[x][y])cout<<0;
    16     else cout<<res[x][y]+1;
    17 }
    18 
    19 int main(){
    20      int t;cin>>t;
    21      while(t--){
    22          cin>>n>>m>>k;init();
    23          
    24          for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){
    25              cin>>g[i][j];
    26              if(!g[i][j])res[i][j]=0;
    27          }
    28          
    29          bool flag=1;
    30          
    31          for(int i=1;i<=n;i++){
    32              int j=1;
    33              for(;j<=m;j++){
    34                  int cnt=0;
    35                  while(j<=m&&g[i][j])cnt++,j++;
    36                  if(cnt>k){flag=0;break;}
    37              }
    38          }
    39          
    40          for(int i=1;i<=m;i++){
    41              int j=1;
    42              for(;j<=n;j++){
    43                  int cnt=0;
    44                  while(j<=n&&g[j][i])cnt++,j++;
    45                  if(cnt>k){flag=0;break;}
    46              }
    47          }
    48          if(!flag){puts("NO");continue;}
    49          puts("YES");
    50          
    51          for(int i=1;i<=n;i++){
    52              print(i,1);
    53              for(int j=2;j<=m;j++)cout<<" ",print(i,j);
    54              cout<<endl;
    55          }
    56      }
    57     return 0;
    58 }
  • 相关阅读:
    操作系统_3:linux教程列表
    MongoEngine 查询语法
    Spark_1:教程索引
    软件需求十步走之阅读笔记03
    软件需求十步走之阅读笔记02
    软件需求十步走之阅读笔记01
    暑期学习四
    暑期学习三
    暑期学习二
    暑期学习一
  • 原文地址:https://www.cnblogs.com/jihe/p/6673240.html
Copyright © 2020-2023  润新知