zoukankan      html  css  js  c++  java
  • C. A Mist of Florescence

     

    http://codeforces.com/contest/989/problem/C

     

    这磨人的小妖精……

     

    贪心,不难发现正确性,用一个A、B、C、D、分别哪拿一个出来画框,每一个框处理一种字母

     

    例如一个框长这样:

     

     

    加层后长这样:

     

    反正都只花费1个A

     

    处理字母后长这样:

     

     

    我用1个A画框来处理剩余B,1个B画框来处理剩余C,以此类推。

    我的框长度都为50,如果有字母要处理,框占2行,字母2行,不够再2行,最多6行就可以处理完100个字符。(因为每2行处理49个)。

    处理一个字符最多8行,4*8=32,50行是足够的。

     

     1 public class Main {
     2 
     3     public static void main(String[] args) {
     4         Scanner io = new Scanner(System.in);
     5         
     6         char[][] ans = new char[200][200];
     7         //ans[p1][]:正在处理的字符串
     8         int p1 = 0;
     9         int[][] a = new int[4][2];
    10 
    11         for (int i = 0; i < 4; i++) {
    12             a[i][0] = io.nextInt();
    13             a[i][1] = 'A' + i;
    14         }
    15 
    16         for (int i = 0; i < 4; i++) {
    17 
    18             //框字符ch1,处理字符ch2,有num个ch2处理
    19             int j = i == 3 ? 0 : i + 1;
    20             char ch1 = (char) a[i][1], ch2 = (char) a[j][1];
    21             //不管num个数多少,都画框
    22             for (int k = 0; k < 50; k++) ans[p1][k] = ch1;
    23             p1++;
    24 
    25             int num = a[j][0] - 1;
    26             //处理ch2
    27             if (num>0){
    28                 //x是处理行1,y是处理行2,z是列指针,v在01之间不停变换
    29                 int x = p1, y = p1 + 1, z = 0, v = 0;
    30                 char[] t = new char[]{ch1, ch2};
    31                 //框的右边界
    32                 ans[p1][49]=ans[p1+1][49]=ch1;
    33                 p1+=2;
    34                 while (num-- > 0) {
    35                     //2行不够
    36                     if (z==49){
    37                         for (int k = 0; k < 50; k++) ans[y+1][k]=ch1;
    38                         x+=3;y+=3;p1+=3;z=0;v^=1;
    39                         ans[x][49]=ans[y][49]=ch1;
    40                     }
    41                     //画ch2
    42                     ans[x][z] = t[v];
    43                     ans[y][z++] = t[v^=1];
    44                 }
    45                 //处理完ch2后补全字符串后面的空余部分
    46                 for (int k=z;ans[x][k]==0&&z-1>=0;k++){
    47                     ans[x][k]=ans[x][z-1];
    48                     ans[y][k]=ans[y][z-1];
    49                 }
    50             }
    51             //画下半边框
    52             for (int k = 0; k < 50; k++) ans[p1][k] = ch1;
    53             p1++;
    54         }
    55 
    56         System.out.println(p1+" "+50);
    57         for (int i = 0; i <p1; i++) System.out.println(new String(ans[i]).substring(0,50));
    58     }
    59 }
  • 相关阅读:
    Linq in
    wp7中应用程序清单(WMAppManifest.xml)详细说明
    wp7 给TextBox设置圆角边框
    js 中的闭包
    远程控制PPT软件的帮助
    wp7三种图标大小配置
    在英文版的sqlserver下用LIKE语句不能查询中文
    程序员版《那些年我们一起追过的女孩》(2)
    程序员版《那些年我们一起追过的女孩》(3)
    webbrowser 请求的资源在使用中。 (异常来自 HRESULT:0x800700AA)
  • 原文地址:https://www.cnblogs.com/towerbird/p/11248454.html
Copyright © 2011-2022 走看看