列表

详情


NC227309. 牛牛冲钻五

描述

牛牛最近在玩炉石传说,这是一款一对一对战的卡牌游戏,牛牛打算努力冲上钻五分段,获得丰厚的天梯奖励。

炉石传说的段位可以用星数来表示,具体规则为:若牛牛本场失败,则扣除一星;若牛牛本场获胜,需要看牛牛是否触发了连胜奖励,若牛牛获得了至少三连胜(即本局对局的上一局和上上局都获胜)则获得星,否则获得一星。

现在给出牛牛游玩的场记录,请你判断牛牛最终的星数和初始星数的差。

输入描述

第一行输入一个整数,测试组数。

每个测试的第一行输入两个整数,牛牛共打了几场比赛与连胜奖励的星数。

接下来一行输入一个长为的字符串,之中表示获胜,表示失败,保证只含有这两种字母。

保证所有用例的

输出描述

对每个测试用例,输出一个整数,表示牛牛最终的星数和初始星数的差。

示例1

输入:

2
5 3
WWWLW
5 3
WLLLL

输出:

5
-3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3 解法, 执行用时: 146ms, 内存消耗: 4792K, 提交时间: 2023-08-11 11:38:48

for _ in range(int(input())):
    n, k = map(int, input().split())
    s, r = input(), 0
    for i in range(n):
        if s[i] == 'W': r += k if s[i-2:i] == 'WW'else 1
        else:r -= 1
    print(r)

Java 解法, 执行用时: 478ms, 内存消耗: 20816K, 提交时间: 2023-08-11 11:37:02

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		while(n-->0) {
			int a=sc.nextInt();
			int b=sc.nextInt();
			String c=sc.next();
			int sum=0,w=0;
			for(int i=0;i<a;i++) {
				if(c.charAt(i)=='W') {
					w++;
					if(w>=3)sum+=b;
					else sum++;
				} else {
					w=0;
					sum--;
				}
			}
			System.out.println(sum);
		}
	}
}

上一题