上海大学五校联赛-神无月排位赛

来源:互联网 发布:java调用mysql连接池 编辑:程序博客网 时间:2024/05/16 00:26

大多游戏题都是模拟题

这场比赛毕竟是人家上海人的线下赛,网络卡的不行,这道模拟题,我初写时把一个变量fg设置为了char字符型(因为比赛结果只有输赢0或1),我习惯了节省空间,可是后来用了if(fg) 判断,不管fg = '0', ascii = 48,还是'1’49,if判断都为真。我把代码给大神了,结果错了。后来我就把char fg, 改为了int fg,再次把代码给大神,可是网络卡,再也没提交上。直到最后还有几分钟结束,网络恢复10%,我把代码提交了,过了Accept。然而,大神没交成……

神无月排位赛

发布时间: 2017年7月8日 21:06   最后更新: 2017年7月8日 22:35   时间限制: 1000ms   内存限制: 128M

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

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

image.png

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

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

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

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

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

 复制
151 1 1 1 1 1 1 1 1 1 1 1 1 0 1301 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
CB


#define _CRT_SECURE_NO_WARNINGS#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <algorithm>using namespace std;const char str[] = "DCBAS";int state, score, jj, first;void solve(int fg) {if (state >= 4) return;switch (jj) {case -1:if (fg) {score += 10;if (score >= 100) jj = 0, score = 0;}else score = score <= 5 ? 0 : score - 5;break;case 0:if (fg) first = 1;++jj;break;case 1:if (fg) {if (first == 1) {state++;//连赢两场 ,晋级 score = 0; jj = -1; first = 0;}else first = 0, ++jj; //一负一赢 }else {if (first == 0) { //连负两场 score = 60;jj = -1;}else ++jj; // ; 一赢一负 }break;case 2: //第三场if (fg) {state++;score = 0; jj = -1; }else {score = 60; jj = -1;}first = 0;break;}}int main(){int n;while (~scanf("%d", &n)) {int fg;state = 0, score = 0, jj = -1, first = 0;//jj = -1, 没有达到晋级;0,准备晋级;1,2,3 。firt 第一场是否赢 while (n-- > 0) {scanf("%d", &fg);solve(fg);}printf("%c\n", str[state]);}return 0;}




阅读全文
0 0
原创粉丝点击