首页 > 代码库 > “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 B

“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 B

《神无月》作为盛大游戏2017年的全新原创大作,其开发团队在自研实力强大的传世工作室基础之上,还有美树本晴彦等日本一线知名画师及日本游戏音乐大师崎元仁加盟参与制作。目前正在不限号内测中,有很多玩家进入到神无月的世界中。

在神无月中,有着玩家之间切磋的排位赛,其段位主要分为五大段位,从低到高依次为:新兵、菁英、战将、统帅、王者。每个玩家只有从新兵段位慢慢努力,一点点晋级才能到达王者段位。成为一个王者是每一个玩家的追求和心愿。

技术分享

假设神无月的段位系统如下:

从低到高的段位依次简记为:D、C、B、A、S。玩家打排位赛,每胜利1局增加10分,输1局扣除5分。每一个段位都需要积分,累计100分才可以进入晋级赛,晋级赛采用三局两胜制(3局中达到2局胜利就晋级成功,有2局失败就算晋级失败, 连胜或连败两局,第三局不需要打了)。晋级成功后,成为下一个段位,积分变为0,重新开始算分;如果晋级失败,则积分变为60,重新开始算分。为方便计算,如果该玩家一直输,积分降为0后,不再降分,也不会掉段位。

大圣同学最近对神无月非常喜欢,一直在努力成为王者。他从新兵0分开始打排位赛(刚开始处在段位D),他告诉你最近若干场比赛的最后胜利情况,请你写个算法猜猜他现在所处的段位。当段位到达S时,段位将不再提高。

有若干组数据。
每组的第一行为一个0<N<500  ),表示有 场比赛数据。
第二行有 个数字,每个数字之间有空格隔开,每个数字代表每场比赛的输赢情况, 表示赢, 表示输。
注意:当第 场比赛结束时,若大圣同学正处于晋级赛,并且还无法决定晋级成功或失败,那么可以忽略这场晋级赛

对于每组比赛数据,输出最后所处的段位的一个英文字符( 这五个段位中的一个)。

复制
15
1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
30
1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1
C
B

也没啥说的
 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<string.h>
 4 #include<stack>
 5 #include<set>
 6 #include<queue>
 7 #include<vector>
 8 #include<map>
 9 #include<iostream>
10 #include<algorithm>
11 #define MAXN 1010000
12 #define LL long long
13 #define ll __int64
14 #define INF 0xfffffff
15 #define mem(x) memset(x,0,sizeof(x))
16 #define PI acos(-1)
17 #define eps 1e-8
18 using namespace std;
19 int a[1000];
20 int main()
21 {
22     int n,m;
23     while(~scanf("%d",&n)){
24         int level=0;
25         int Sore=0;
26         int flag=-1;
27         int Ve=0;
28         memset(a,0,sizeof(a));
29         for(int i=1;i<=n;i++){
30             scanf("%d",&a[i]);
31         }
32         for(int i=1;i<=n;){
33 
34 
35             if(Sore<100){
36                 if(a[i]==1){
37                     Sore+=10;
38                 }else{
39                     Sore-=5;
40                     if(Sore<=0){
41                         Sore=0;
42                     }
43                 }
44                 i++;
45             }else{
46               //  cout<<i<<endl;
47                 if(a[i]==1&&a[i+1]==1){
48                     level++;
49                     Sore=0;
50                     i+=2;
51                 }else if(a[i]==1&&a[i+1]==0&&a[i+2]==1){
52                     level++;
53                     Sore=0;
54                     i+=3;
55                 }else if(a[i]==1&&a[i+1]==0&&a[i+2]==0){
56                     Sore=60;
57                     i+=3;
58                 }else if(a[i]==0&&a[i+1]==0){
59                     Sore=60;
60                     i+=2;
61                 }else if(a[i]==0&&a[i+1]==1&&a[i+2]==1){
62                     level++;
63                     Sore=0;
64                     i+=3;
65                 }else if(a[i]==0&&a[i+1]==1&&a[i+2]==0){
66                     Sore=60;
67                     i+=3;
68                 }
69             }
70             if(i>n){
71                 break;
72             }
73         }
74         if(level==0){
75             cout<<"D"<<endl;
76         }else if(level==1){
77             cout<<"C"<<endl;
78         }else if(level==2){
79             cout<<"B"<<endl;
80         }else if(level==3){
81             cout<<"A"<<endl;
82         }else{
83             cout<<"S"<<endl;
84         }
85     }
86     return 0;
87 }

 

“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 B