• codeforces 437A. The Child and Homework 解题报告


    题目链接:http://codeforces.com/problemset/problem/437/A

    题目意思:给出四个选项A、B、C、D选项的内容描述,要求选出符合以下条件的一项。

         (1)如果某个选项描述(排除前缀X.)的长度至少两倍短于其他选项,即 2*某个选项的长度 <= 其他选项的长度; 或者某个选项的长度至少两倍长于其他选项,即 其他选项的长度 <= 2*某个选项的长度,那么就认为该选项是great的。

         (2)如果只有一个great 的选项,就输出该选项(A or B or C or D),否则输出C。

          一开始对第二个条件有少少理解错了,被一个印度人hack了(乌冬兄教我看的),我刹时对他恨之入骨...哈哈哈,说笑,错了是件好事。接着死改都过不了hack,果断做B了。后来经乌冬兄的引导(其实他说的我已经知道的了),反正都是很感谢他。本来搞到很晚都过不了就关电脑了,关了电脑洗漱的时候顿时灵感出现,马上开回,终于过了^_^!!!

          关键就是 choice 被认为是great时,多于一个是如何理解的!就是同时存在 2*某个选项的长度 <= 其他选项的长度  和   其他选项的长度 <= 2*某个选项的长度,此时great的choice就不少于一个了。只能输出C!还有就是如果都没有这两种情况的任意一种,也需要输出C!

         

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cstring>
     5 #include <algorithm>
     6 using namespace std;
     7 
     8 const int maxn = 100 + 10;
     9 char a[maxn], b[maxn], c[maxn], d[maxn];
    10 
    11 struct node
    12 {
    13     int len;
    14     char letter;
    15 }choice[5];
    16 
    17 int cmp(node x, node y)
    18 {
    19     return x.len < y.len;
    20 }
    21 
    22 int main()
    23 {
    24     while (cin >> a >> b >> c >> d)
    25     {
    26         memset(choice, 0, sizeof(choice));
    27         choice[0].len = strlen(a) - 2;
    28         choice[0].letter = 'A';
    29         choice[1].len = strlen(b) - 2;
    30         choice[1].letter = 'B';
    31         choice[2].len = strlen(c) - 2;
    32         choice[2].letter = 'C';
    33         choice[3].len = strlen(d) - 2;
    34         choice[3].letter = 'D';
    35         sort(choice, choice+4, cmp);
    36 
    37         if (2*choice[0].len <= choice[1].len)
    38         {
    39             if (choice[3].len >= 2*choice[2].len)
    40                 printf("C
    ");
    41             else
    42                 printf("%c
    ", choice[0].letter);
    43         }
    44         else if (choice[3].len >= 2*choice[2].len)
    45         {
    46             if (2*choice[0].len <= choice[1].len)
    47                 printf("C
    ");
    48             else
    49                 printf("%c
    ", choice[3].letter);
    50         }
    51         else
    52             printf("C
    ");
    53     }
    54     return 0;
    55 }

         

  • 相关阅读:
    5 静态链接和动态链接
    4 程序编译与链接
    3.死锁
    2.调度算法
    1 select,poll和epoll
    python语言特性
    python动态规划
    python语言编程算法
    链表
    认识黑客常用的入侵方法
  • 原文地址:https://www.cnblogs.com/windysai/p/3764074.html
Copyright © 2020-2023  润新知