zoukankan      html  css  js  c++  java
  • AtCoder Regular Contest 080 D

    地址:http://arc080.contest.atcoder.jp/tasks/arc080_b

    题目:

    D - Grid Coloring


    Time limit : 2sec / Memory limit : 256MB

    Score : 400 points

    Problem Statement

    We have a grid with H rows and W columns of squares. Snuke is painting these squares in colors 12N. Here, the following conditions should be satisfied:

    • For each i (1≤iN), there are exactly ai squares painted in Color i. Here, a1+a2+…+aN=HW.
    • For each i (1≤iN), the squares painted in Color i are 4-connected. That is, every square painted in Color i can be reached from every square painted in Color i by repeatedly traveling to a horizontally or vertically adjacent square painted in Color i.

    Find a way to paint the squares so that the conditions are satisfied. It can be shown that a solution always exists.

    Constraints

    • 1≤H,W≤100
    • 1≤NHW
    • ai≥1
    • a1+a2+…+aN=HW

    Input

    Input is given from Standard Input in the following format:

    H W
    N
    a1 a2  aN
    

    Output

    Print one way to paint the squares that satisfies the conditions. Output in the following format:

    c11  c1W
    :
    cH1  cHW
    

    Here, cij is the color of the square at the i-th row from the top and j-th column from the left.

    思路:蛇形填数即可

     1 #include <bits/stdc++.h>
     2  
     3 using namespace std;
     4  
     5 #define MP make_pair
     6 #define PB push_back
     7 typedef long long LL;
     8 typedef pair<int,int> PII;
     9 const double eps=1e-8;
    10 const double pi=acos(-1.0);
    11 const int K=1e6+7;
    12 const int mod=1e9+7;
    13  
    14 int r,c,n,x,y,ans[200][200];
    15  
    16 int main(void)
    17 {
    18     scanf("%d%d%d",&r,&c,&n);
    19     x=1,y=1;
    20     for(int i=1,cnt;i<=n;i++)
    21     {
    22         scanf("%d",&cnt);
    23         while(cnt--)
    24         {
    25             ans[x][y]=i;
    26             if(y==c&&x%2==1)
    27                 y=c,x++;
    28             else if(y==1&&x%2==0)
    29                 y=1,x++;
    30             else if(x&1)
    31                 y++;
    32             else
    33                 y--;
    34         }
    35     }
    36     for(int i=1;i<=r;i++)
    37     for(int j=1;j<=c;j++)
    38         printf("%d%c",ans[i][j],j==c?'
    ':' ');
    39     return 0;
    40 }
  • 相关阅读:
    LaTeX 表格指定宽度并居中
    ubuntu 14.04服务器上使用nginx搭建wordpress博客详解
    17款可视化工具,让你的数据更酷炫
    创建oracle数据库图示(一步一步教你安装oracle)
    创建oracle数据库图示(一步一步教你安装oracle)
    oracle 内连接 外连接 查询 笔记
    oracle 内连接 外连接 查询 笔记
    Telnet用不了怎么办
    Telnet用不了怎么办
    File 类 操作实例
  • 原文地址:https://www.cnblogs.com/weeping/p/7296614.html
Copyright © 2011-2022 走看看