>

2018.02.01(考试)

2018.01.07

寒假培训热身赛

1.奖学金

 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <string.h>
 4 int grade[500][3];
 5 int main(){
 6     freopen("scholar.in","r",stdin);
 7     freopen("scholar.out","w",stdout);
 8     int n;
 9     int i,j;
10     scanf("%d",&n);
11     for(i=1;i<=n;i++){
12         grade[i][0]=i;
13         int b,c;
14         scanf("%d%d%d",&grade[i][1],&b,&c);
15         grade[i][2]=grade[i][1]+b+c;
16     }
17     /*排序*/
18     int t;
19     for(i=1;i<n;i++){
20         int max=i;
21         for(j=i+1;j<=n;j++){
22             if(grade[max][2]<grade[j][2])
23                 max=j;
24             else if(grade[max][2]==grade[j][2]){
25                 if(grade[max][1]<grade[j][1])
26                     max=j;
27                 else if(grade[max][1]==grade[j][1]&&grade[max][0]>grade[j][0])
28                     max=j;
29             }
30         }
31         if(max!=i){
32             t=grade[max][0];grade[max][0]=grade[i][0];grade[i][0]=t;
33             t=grade[max][1];grade[max][1]=grade[i][1];grade[i][1]=t;
34             t=grade[max][2];grade[max][2]=grade[i][2];grade[i][2]=t;
35         }
36     }
37     for(i=1;i<=5;i++)
38         printf("%d %d\n",grade[i][0],grade[i][2]);
39     return 0;
40 }
View Code

状态:AC

2.纪念品分组

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <cstring>
 4 #include <iostream>
 5 #include <algorithm>
 6 using namespace std;
 7 int book[30001],w;
 8 int numb[30001];
 9 int n,yhb=0;
10 int main(){
11     freopen("group.in","r",stdin);
12     freopen("group.out","w",stdout);
13     scanf("%d%d",&w,&n);
14     int i,j;
15     for(i=0;i<n;i++){
16         scanf("%d",&numb[i]);
17         book[i]=1;
18     }
19     sort(numb,numb+n);
20     for(i=n-1;i>=0;i--){
21         int sum;
22         sum=w;
23         if(book[i]==1){
24             yhb++;
25             book[i]=0;
26             for(j=i-1;j>=0;j--){
27                 if(book[j]==1&&sum>=numb[i]+numb[j]){
28                     book[j]=0;
29                     break;
30                 }
31             }
32         }
33     }
34     printf("%d\n",yhb);
35     return 0;
36 }
View Code

状态:AC

3.守望者的逃离

 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <string.h>
 4 int magic,time,S;
 5 int _Max(int x,int y){return x>y?x:y;}
 6 int main(){
 7     freopen("escape.in","r",stdin);
 8     freopen("escape.out","w",stdout);
 9     scanf("%d%d%d",&magic,&S,&time);
10     int i,j;
11     int walk=0,flash=0;
12     for(i=1;i<=time;i++){
13         walk+=17;
14         if(magic>=10){
15             magic-=10;
16             flash+=60;
17         }
18         else magic+=4;
19         walk=_Max(walk,flash);
20         if(walk>=S){
21             printf("Yes\n%d",i);
22             return 0;
23         }
24     }
25     printf("No\n%d",walk);
26     return 0;
27 }
View Code

状态:AC

4.hanoi双塔问题

 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <string.h>
 4 int noi[1001],wei;
 5 int main(){
 6     freopen("hanoi.in","r",stdin);
 7     freopen("hanoi.out","w",stdout);
 8     int n;
 9     scanf("%d",&n);
10     for(int i=1;i<=1000;i++)noi[i]=0;
11     noi[1000]=1;
12     for(int i=1;i<=n+1;i++){
13         if(i==n+1){
14             noi[1000]-=1;
15             for(int j=1000;j>=1;j--)
16                 if(noi[j]<0){
17                     noi[j]+=10;noi[j-1]-=1;}
18         }
19         for(int j=1;j<=1000;j++)noi[j]*=2;
20         for(int j=1000;j>=1;j--)
21             if(noi[j]>=10){
22                 noi[j]-=10;noi[j-1]++;}
23     }
24     for(int i=1000;i>=1;i--)
25         if(noi[i]!=0)wei=i;
26     for(int i=wei;i<=1000;i++)
27         printf("%d",noi[i]);
28     return 0;
29 }
View Code

状态:AC

 P.S.     今天又学习了sort函数的一种新操作:sort ( a , a + n , cmp )。cmp是你自己定义的一个函数,在里面可以重新定义sort函数的比较规则,比如从大到小,排序结构体等。

反思

    对于这次考试,发挥的不是很好。这四道题考查了动态规划之前的除搜索以外所有的基础算法,是一套比较全面的综合题。从考试的情况来看,成绩并不理想,400分只有290分。袁老师说他本来以为我可以上300分的。既然没有达到预期的效果,那么就要反思:

    1.第一题。

    2.第二题。

    3.第三题。

    4.第四题。

posted @ 2018-02-01 16:21  Leo_wey  阅读(191)  评论(0编辑  收藏  举报