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 }

     

原文地址:https://www.cnblogs.com/windysai/p/3764074.html