计蒜客ACM ICPC 2017 Warmup Contest 9--B题-Battle Simulation

  • 时间:2000ms
  • 内存: 65536K

A terrible monster is rampaging through Neo Tokyo 5! The Earth Defense Force (EDF) has sent a mech unit(huge bipedal robot, piloted by Japanese teenagers) to defeat the monster. Because there is only a single mech unit available after previous monster rampages, the EDF has decided to simulate the upcoming battle between the mech and the monster before launching an assault. The EDF noted that the monster’s attack pattern can be simulated by a series of moves that it performs in succession. When denoting each of its moves with a single letter, the attack pattern can be simulated as a single string, which should be read from left to right. The monster has the following moves:

• Rake, denoted by the letter ‘R’;
• Bite, denoted by the letter ‘B’;
• Laser breath, denoted by the letter ‘L’.

image.png

In order to defeat the monster, the mech must perform a counter move per move that the monster makes:

• Slice, denoted by the letter ‘S’, counters the monster’s rake;
• Kick, denoted by the letter ‘K’, counters the monster’s bite;
• Shield, denoted by the letter ‘H’, counters the monster’s laser breath;

扫描二维码关注公众号,回复: 1726337 查看本文章

However, there is one catch. When the monster performs a subsequent combination of the three moves RakeBite andLaser breath, in any order, it becomes a very powerful attack for which the mech must perform a single counter move calledCombo breaker, denoted by the letter ‘C’. A single Combo breaker absorbs the entire combination of three moves. Any following moves from the monster will have to be countered separately or as part of a new combination. A move of the monster can never be part of more than one combination.

Through extensive analysis of the monster’s past behaviour, the EDF is now able to reliably predict the actions of the monster ahead of time. You are given a string representing the moves that the monster will use when battling the mech. The EDF needs you to write a program that outputs the sequence of moves that the mech must perform in order to defeat the monster. 

Input

A single line containing a string of at least 1 and at most 1 000 000 characters, consisting of the letters ‘R’, ‘B’ and ‘L’. 

Output

Output a single string consisting of the letters denoting the moves that are to be made in succession by the mech in order to defeat the monster. 

样例输入1

RRBBBLLR

样例输出1

SSKKKHHS

样例输入2

RBLLLBRR

样例输出2

CHCS

样例输入3

RBLBR

样例输出3

CKS

#include<stdio.h>
#include<string.h>
char s[1000001];
char str[1000001];
int main()
{
	int k;
	while(scanf("%s",s)!=EOF)
	{
		int n=strlen(s);
		k=0;
		for(int i=0;i<n;)
		{
			if((s[i]=='R' && s[i+1]=='B' && s[i+2]=='L')
			|| (s[i]=='R' && s[i+1]=='L' && s[i+2]=='B')
			|| (s[i]=='B' && s[i+1]=='R' && s[i+2]=='L')
			|| (s[i]=='B' && s[i+1]=='L' && s[i+2]=='R')
			|| (s[i]=='L' && s[i+1]=='B' && s[i+2]=='R')
			|| (s[i]=='L' && s[i+1]=='R' && s[i+2]=='B'))
			{
				str[k++]='C';
				i+=3;
				if(i==n) break;
				continue;
			}
			else if(s[i]=='R') str[k++]='S';
			else if(s[i]=='B') str[k++]='K';
			else if(s[i]=='L') str[k++]='H';
			i+=1;
		}
		str[k]='\0';
		printf("%s\n",str);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/zhengxiangmaomao/article/details/78308647