15年ZZUACM校赛总结

本宝宝实在太弱了,心态不好,实力太差,最后还是决定以后努力刷题补题了!

校赛正式赛

B sort

实在太坑了,最后看标程才知道考察的是字符串处理与数字的转化问题,宝宝心好累啊,原本以为确定两个数之间只有一个空格的,跟之前一次BC犯了同样的错误,宝宝要多多刷题,学习经验!

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<string.h>
 4 #include<stdlib.h>
 5 #include<ctype.h>
 6 #include <map>
 7 #include <set>
 8 #include <cmath>
 9 #include <deque>
10 #include <queue>
11 #include <stack>
12 #include <cstdio>
13 #include <cctype>
14 #include <string>
15 #include <vector>
16 #include <cstdlib>
17 #include <cstring>
18 #include <iostream>
19 #include <algorithm>
20 #define LL long long
21 #define INF 0x7fffffff
22 using namespace std;
23 #define N 100005
24  
25 int main()
26 {
27     int a[N],b[N],c[N];
28     char str[2*N];
29     while(gets(str)!=NULL){
30         for(int i=0;i<N;i++){
31             a[i]=0;
32         }
33         int len=strlen(str);
34         int i=0,len1=1;
35         while(i<len){
36             int flag=0;
37             while(str[i]>='0'&&str[i]<='9'){
38 //                cout<<"xiaobiao"<<i<<" "<<str[i]<<endl;
39                 a[len1]=a[len1]*10+str[i]-'0';
40                 i++;
41                 flag=1;
42             }
43 //        cout<<len1<<"a"<<a[len1]<<" ";
44             if(flag==1)len1++;
45             i++;
46         }
47         len1-=1;
48 //        for(int i=1;i<=len1;i++)
49 //        cout<<a[i]<<" ";
50 //        cout<<endl;
51         int len2=0,len3=0;
52         for(i=1;i<=len1;i++) {
53             if(i%3==0){
54                 c[len3++]=a[i];
55                 continue;
56             }
57             if(i%2==0){
58                 b[len2++]=a[i];
59             }
60         }
61 //        printf("len2=%d\tlen3=%d\n",len2,len3);
62         sort(b,b+len2);
63         sort(c,c+len3);
64         reverse(c,c+len3);
65         int j=0;
66         for(i=1;i<=len1;i++){
67             if(i%3==0){
68                 a[i]=c[i/3-1];
69                 continue;
70             }
71             if(i%2==0){
72                 a[i]=b[j];
73                 j++;
74 //                printf("tttt%d\t",a[i]);
75             }
76         }
77         for(int i=1;i<len1;i++){
78             printf("%d ",a[i]);
79         }
80         printf("%d\n",a[len1]);
81     }
82     return 0;
83 }
View Code

E easy Problem

本宝宝脑子抽风了,暴力是一个无脑儿暴力,事实上判断最大数1000000中各个数位的数字之和最多是9*5=45,所以找到一个初始值设置略小于(n-45),之后判断到n就可以了

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<string.h>
 4 #include<stdlib.h>
 5 #include<ctype.h>
 6 #include <map>
 7 #include <set>
 8 #include <cmath>
 9 #include <deque>
10 #include <queue>
11 #include <stack>
12 #include <cstdio>
13 #include <cctype>
14 #include <string>
15 #include <vector>
16 #include <cstdlib>
17 #include <cstring>
18 #include <iostream>
19 #include <algorithm>
20 #define LL long long
21 #define INF 0x7fffffff
22 using namespace std;
23 #define N 1000000
24  
25 int main()
26 {
27 //    freopen("schout.txt","w",stdout);
28     int i;
29     while(cin>>i){
30         int res=0;
31         for(int j=i-55;j<i;j++){
32             int sum=j,k=j;
33             while(k){
34                 sum+=k%10;
35                 k=k/10;
36             }
37             if(sum==i){
38                 res=j;
39                 break;
40             }
41         }
42         printf("%d\n",res);
43     }
44     return 0;
45 }
View Code

 H squee_spoon and his Cube VI (simple)

还是脑抽,反正debug很久才过的,白天重写一遍,上代码

校赛热身赛

你可能感兴趣的:(15年ZZUACM校赛总结)