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 commentlinker, "/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         getlinecin, 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 isalphatext[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 commentlinker, "/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     whilescanf "%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                 ifjudge 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 dispoint a, point b) {
22     return sqrta.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     whileT--) {
33         f = true;
34         scanf"%d", &n);
35         forint i = 1; i <= n; ++i) {
36             scanf"%lf%lf", &p[i].x, &p[i].y);
37         }
38         forint 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 = distmp, p[per[0]]);
46             forint i = 1; i < n; ++i) {
47                 sum += disp[per[i]], p[per[i - 1]]);
48             }
49             sum += distmp, p[per[n - 1]]);
50             iff) {
51                 ans = sum;
52                 f = false;
53             } else
54                 ans = minans, sum);
55         } whilenext_permutationper, per + n));
56         printf"Case #%d: %.2lf
", cas++, ans);
57     }
58     return 0;
59 }

 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平