zoukankan      html  css  js  c++  java
  • Contest

      Problem Id Title
      Problem A A+B
      Problem B 统计字数
      Problem C 生日计算
      Problem D 冬瓜的寒假之旅

    Problem A(略)

    Problem B

    B题目就是一个统计字符的简单模拟,纵向记录横向输出就可。先for一圈遍历遍最大的个数可确定高度。

     1 /****************************************/
     2 /*****            Desgard_Duan        *****/
     3 /****************************************/
     4 //#pragma comment(linker, "/STACK:102400000,102400000")
     5 #define _CRT_SECURE_NO_WARNINGS
     6 #include <iostream>
     7 #include <cstdio>
     8 #include <cstdlib>
     9 #include <cstring>
    10 #include <string>
    11 #include <algorithm>
    12 #include <stack>
    13 #include <map>
    14 #include <queue>
    15 #include <vector>
    16 #include <set>
    17 #include <functional>
    18 #include <cmath>
    19 #include <numeric>
    20 
    21 using namespace std;
    22 
    23 vector<string> ans;
    24 int let[26];
    25 
    26 int main () {
    27     string text = "", in;
    28     for (int i = 0 ; i < 4; ++ i) {
    29         getline(cin, in);
    30         text += in;
    31     }
    32     //cout << text << endl;
    33     memset (let, 0, sizeof (let));
    34     int Max = 0;
    35     for (int i = 0; i < text.size(); ++ i) {
    36         if (isalpha(text[i])) {
    37             let[text[i] - 'A'] ++;
    38             Max = max (Max, let[text[i] - 'A']);
    39         }
    40     }
    41     for (int i = 1; i <= Max; ++ i) {
    42         string text_line = "";
    43         for (int j = 0 ; j < 26; ++ j) {
    44             if (i > Max - let[j]) {
    45                 text_line += "*";
    46             } else {
    47                 text_line += " ";
    48             }
    49             if (j != 25) text_line += " ";
    50         }
    51         cout << text_line << endl;
    52     }
    53     puts("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z");
    54     return 0;
    55 }

    Problem C

    考虑闰年的2月29日生日就可,其他没有什么坑。

     1 /****************************************/
     2 /*****            Desgard_Duan        *****/
     3 /****************************************/
     4 //#pragma comment(linker, "/STACK:102400000,102400000")
     5 #define _CRT_SECURE_NO_WARNINGS
     6 #include <iostream>
     7 #include <cstdio>
     8 #include <cstdlib>
     9 #include <cstring>
    10 #include <string>
    11 #include <algorithm>
    12 #include <stack>
    13 #include <map>
    14 #include <queue>
    15 #include <vector>
    16 #include <set>
    17 #include <functional>
    18 #include <cmath>
    19 #include <numeric>
    20 
    21 using namespace std;
    22 
    23 int judge( int x ) {
    24     if( x % 400 == 0 || ( x % 4 == 0 && x % 100  != 0 ) )
    25         return 1;
    26     return 0;
    27 }
    28 int main() {
    29     int y, m, d, t;
    30     while(scanf( "%d", &t ) != EOF) {
    31         while( t-- ) {
    32             scanf( "%d-%d-%d", &y, &m, &d );
    33             int sum = 0;
    34             if( judge( y ) && m == 2 && d == 29 && !judge( y + 30 ) ) {
    35                 puts( "-1" );
    36                 continue;
    37             }
    38             for( int i = 0; i <= 30; ++i )
    39                 if(judge( y + i ))
    40                     sum ++;
    41             if( judge( y + 30 ) && m <= 2 && d < 28 )
    42                 --sum;
    43             if( judge( y ) && m >= 3 )
    44                 --sum;
    45             printf( "%d
    ", sum + 30 * 365 );
    46         }
    47     }
    48     return 0;
    49 }

    Problem D

    主要考察枚举法。即全排列。在数据量不大的情况下,即可将TSP问题的所有情况全部列出,寻求最佳值。

    另外可以学习一下next_permutation函数的用法,白书中也有介绍。

     1 #include <cstring>
     2 #include <iostream>
     3 #include <cstdlib>
     4 #include <cctype>
     5 #include <cstdio>
     6 #include <cmath>
     7 #include <algorithm>
     8 #include <vector>
     9 #include <map>
    10 #include <set>
    11 #include <queue>
    12 
    13 using namespace std;
    14 
    15 int per[10];
    16 
    17 struct point {
    18     double x, y;
    19 } p[10];
    20 
    21 double dis(point a, point b) {
    22     return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
    23 }
    24 
    25 int main() {
    26     //freopen("in.txt","r",stdin);
    27     //freopen("out.txt","w",stdout);
    28     int T, n, cas = 1;
    29     double ans;
    30     bool f;
    31     scanf("%d", &T);
    32     while(T--) {
    33         f = true;
    34         scanf("%d", &n);
    35         for(int i = 1; i <= n; ++i) {
    36             scanf("%lf%lf", &p[i].x, &p[i].y);
    37         }
    38         for(int i = 1; i <= n; ++i) {
    39             per[i - 1] = i;
    40         }
    41         do {
    42             point tmp;
    43             tmp.x = 0;
    44             tmp.y = 0;
    45             double sum = dis(tmp, p[per[0]]);
    46             for(int i = 1; i < n; ++i) {
    47                 sum += dis(p[per[i]], p[per[i - 1]]);
    48             }
    49             sum += dis(tmp, p[per[n - 1]]);
    50             if(f) {
    51                 ans = sum;
    52                 f = false;
    53             } else
    54                 ans = min(ans, sum);
    55         } while(next_permutation(per, per + n));
    56         printf("Case #%d: %.2lf
    ", cas++, ans);
    57     }
    58     return 0;
    59 }

     

  • 相关阅读:
    iOS刨根问底-深入理解RunLoop
    深入理解RunLoop
    Core Graphics框架 利用Quartz 2D绘图
    经济
    次贷危机的原因
    次级抵押贷款
    信用评级
    信用
    理解UIView的绘制-孙亚洲
    二级域名
  • 原文地址:https://www.cnblogs.com/Destiny-Gem/p/4099717.html
Copyright © 2011-2022 走看看