Description

冰弦非常热衷于过气微信小游戏“跳一跳”,现在给出了他每次游戏时的一些信息,请你帮他计算一下每局游戏的得分。

跳一跳的游戏规则如下:

  • 玩家操控一个小棋子,在形状各异的“盒子”上边一路往前跳,当棋子跌落盒子之外时则游戏结束。
  • 盒子的正中心为“完美落点”,其他为“普通落点”。
  • 每次跳跃如果成功跳到了一个新的盒子上,记为“有效跳跃”,该落点为“有效落点”。
  • 每次有效跳跃结束时,如果存在上一次有效跳跃且距离上一次有效跳跃结束的时间不超过1秒,则本次有效跳跃记为“快速跳跃”。
  • 每次有效跳跃可以获得一定的分数。
    • 如果当前落点为完美落点,而且上一次有效落点存在且为完美落点,那么此次跳跃的得分为上次有效跳跃的得分+2。
    • 如果当前落点为完美落点,上一次有效落点存在且为普通落点,而且上次跳跃或者此次跳跃为快速跳跃,那么此次跳跃的得分为4分。
    • 如果当前落点为完美落点,上一次有效落点不存在或为普通落点,而且此次跳跃也不是快速跳跃,那么此次跳跃的得分为2分。
    • 如果当前落点为普通落点,而且此次跳跃是快速跳跃,那么此次跳跃的得分为2分。
    • 其他情况下,得分为1分。
  • 对于一些特殊的盒子,棋子在上面逗留1秒就可以获得额外的加分。
    • 魔方:额外得分为10分。
    • 便利店:额外得分为20分。
    • 音乐盒:额外得分为30分。
  • 如果某两次有效跳跃结束之间(或最后一次死亡跳跃结束和前一次有效跳跃结束之间,参见样例第5、6局游戏)的间隔不少于2秒,我们认为玩家在上一个盒子上逗留了1秒。

Input

输入包含不超过10组数据,每组数据描述了冰弦的一局游戏。

每组数据有若干行,除最后一行外,每一行描述一次有效跳跃(总有效跳跃数不超过105),格式为“跳跃结束的时间 落点 盒子类型”;最后一行是“跳跃结束的时间 GAME OVER”,表示小棋子跌落盒子之外,游戏结束。

“跳跃结束的时间”为一个不超过109的整数,单位为毫秒。

“落点”为一个字符串,“Perfect”表示完美落点,“Good”表示普通落点。

“盒子类型”为一个字符串,“Rubik”表示魔方,“Store”表示便利店,“Music”表示音乐盒,“Box”表示普通盒子。

保证数据合法地描述了一局正常有效的游戏。

更多输入格式的信息请参考样例输入。

Output

对于每组数据,输出一行一个整数,表示冰弦在此局游戏中获得的分数。

Sample Input

1000 Good Box
3000 Good Box
5000 Good Box
7000 GAME OVER
1000 Good Box
2000 Good Box
3000 Good Box
4000 GAME OVER
1000 Perfect Box
2000 Perfect Box
3000 Perfect Box
4000 GAME OVER
1000 Perfect Rubik
2000 Perfect Store
4000 Perfect Music
8000 Perfect Box
16000 GAME OVER
4000 Perfect Rubik
5000 Perfect Rubik
9000 GAME OVER
4000 Perfect Rubik
8000 Perfect Rubik
16000 GAME OVER

Sample Output

3
5
12
70
16
26

Hint

对于第一局游戏,得分为 1+1+1=3 ;
对于第二局游戏,得分为 1+2+2=5 ;
对于第三局游戏,得分为 2+4+6=12 ;
对于第四局游戏,得分为 2+4+20+6+30+8=70 。

冰弦不会手抖进行“无效跳跃”的,不用纠结“无效跳跃”的问题。

Source

Author

devenber


#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
long long tim,tim_last;
long long flag,flag1,flag2,num,cnt;
string s1, s2,s11,s22;
string c1 = "Good", c2 = "Perfect", c3 = "GAME";
string a1 = "Rubik", a2 = "Store", a3 = "Music";
int main()
{
int cas = 0;
flag=flag1=flag2 = 0; num = 0; cnt = 0; tim_last = 0;
while ((cin >> tim >> s1 >> s2)&&(cas)<=10)
{
if (flag && (tim - tim_last) <= 1000)
flag1 = 1;
else
flag1 = 0;
if ((tim - tim_last) >= 2000)
{
if (s22 == a1)
num += 10;
else if (s22 == a2)
num += 20;
else if (s22 == a3)
num += 30;
}
if (s1 == c2)
{
if (flag == 2){
flag = 2;
cnt += 2; num += cnt;
}
else if (flag == 1 && (flag1 || flag2)){
flag = 2;
cnt = 4; num += cnt;
}
else if ((flag == 0 || flag == 1) && flag1 == 0) {
flag = 2;
cnt = 2; num += cnt;
}
else{
flag = 2;
cnt = 1; num += cnt;
}
}
else if (s1 == c1)
{
if (flag1 == 1)
{
flag = 1;
cnt = 2; num += cnt;
}
else
{
flag = 1;
cnt = 1;
num += cnt;
}
}
else if (s1 == c3)
{
printf("%lld\n", num);
cas++;
tim_last = 0;
flag2 = 0;
flag = 0; flag1 = 0; cnt = 0; num = 0;
s11 = "0"; s22 = "0";
continue;
}
tim_last = tim;
flag2 = flag1;
s11 = s1, s22 = s2;
}
return 0;
}


CSU - 2058 跳一跳的更多相关文章

  1. 挑战App Store,微信通过“跳一跳”秀了一下“小程序”的肌肉

    2017年即将结束的时候,微信放了一个大招.随着最新的微信v6.6.1版本更新,基于小程序的"小游戏"板块正式上线.微信上首发的这款"小游戏"叫"跳一 ...

  2. .NET开发一个微信跳一跳辅助程序

    昨天微信更新了,出现了一个小游戏"跳一跳",玩了一下 赶紧还蛮有意思的 但纯粹是拼手感的,玩了好久,终于搞了个135分拿了个第一名,没想到过一会就被朋友刷下去了,最高的也就200来 ...

  3. C#又能出来装个B了。一步一步微信跳一跳自动外挂

    PS:语言只是载体.思维逻辑才是王道 前天看见了个python的脚本.于是装python.配置环境变量.装pip.折腾了一上午,最终装逼失败. 于是进入博客园,顶部有篇文章吸引了我 .NET开发一个微 ...

  4. 用C#实现微信“跳一跳”小游戏的自动跳跃助手

    一.前言: 前段时间微信更新了新版本后,带来的一款H5小游戏“跳一跳”在各朋友圈里又火了起来,类似以前的“打飞机”游戏,这游戏玩法简单,但加上了积分排名功能后,却成了“装逼”的地方,于是很多人花钱花时 ...

  5. Adb+.net 实现微信跳一跳自动化

    第一次用adb,一开始只是想试试看能不能解析出,没有看网上的现有解析方式. 需要安卓机开启usb 调试+电脑运行.打开跳一跳的界面 点击程序 [开始]按钮即可开始,别的按钮都是调试用的 主要流程是用a ...

  6. 微信跳一跳Python

    微信最新的小程序里面出了个叫“跳一跳”的小游戏,大神们也通过Python实现了自动玩游戏具体代码 如下: Github地址: https://github.com/wangshub/wechat_ju ...

  7. 微信跳一跳辅助自动跳Python

    一.说明 此代码借鉴github一位大神所写,已经做了简化合并处理,如果能成功连上手机并运行,可以实现程序自动玩游戏,刷个1000+的分数轻轻松松 github源码地址 https://github. ...

  8. python如何玩“跳一跳”!(windows安桌版本请进!)

    最近"跳一跳",很火爆,有木有? 看了一下网上的教程,动作搭建了一下环境,就可以用脚本自动跑起来啦!!! 下面说一下android手机的实现过程: 首先,是python环境的搭建 ...

  9. 微信小程序跳一跳辅助程序(手动版)

    最近,微信官方推出了demo小程序游戏<跳一跳>,这个游戏操作简单,容易上手,却又不容易获得高分,受到很多人的喜爱(emm...这游戏有毒).自己也尝试了玩了几次,作为一个手残+脑残的资深 ...

随机推荐

  1. 在Emacs中画思维导图

    是的,你没有看错.其实,不只画思维导图,画结构图.流程图等,都可以.那怎么办呢?就是借助 Graphviz . Graphviz 可以方便地表达概念之间的联系,因此用它画思维导图是可行的,再加上它是个 ...

  2. 基本控件文档-UIKit结构图

    CHENYILONG Blog 基本控件文档-UIKit结构图 Fullscreen   UIKit结构图 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博htt ...

  3. HDU 1074 Doing Homework (dp+状态压缩)

    题目链接 Problem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot ...

  4. Django 安装 —Django学习 (一)

    Django Django 是一个python 框架, 采用MTV的模式,模型,模板,视图 注意事项 Django 版本和 python 的版本是一一对应的,安装时一定要注意相应的版本信息. 如下图: ...

  5. 20165227 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20165227 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:朱越 学号:20165227 指导教师:娄 ...

  6. 20155303 2016-2017-2 《Java程序设计》第四周学习总结

    20155303 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 6.1 何谓继承 继承避免多个类间重复定义共同行为,使用关键字exten ...

  7. mybatis查询参数为0时无法识别问题

    最近在工作中遇到一个mybatis参数问题,主要是列表查询按照状态进行过滤,其中已完成状态值是0,被退回是1.如图所示 , 然后Mapper里面是和平常一样的写法<if test="s ...

  8. CAS和AQS

    一.CAS CAS(Compare And Swap),即比较并交换.是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V).预期原值(A)和新值(B).如果内 ...

  9. shell系统检测->

    系统状态检测脚本练习 1-> 查看磁盘状态 思路:查看磁盘/当前使用状态,如果使用率超过80%则报警发邮件 1.获取磁盘当前使用的值 df -h|grep /$ 2.从获取到的值中提取出,对应的 ...

  10. Android 抽屉导航

    原文地址 http://developer.android.com/training/implementing-navigation/nav-drawer.html 创建抽屉导航 导航抽屉是在 屏幕左 ...