这题看起来难,题面有点长,读懂就是水题一个了。
题意:有两个人:JOJO 和 Dio 玩游戏 两个人各自有n长度的字符串,以及相同的血量h
现从1开始遍历字符串,当 JOJO 有连续的后缀字符是ora 那么就会施法使得Dio 血量减一
当Dio有连续的后缀字符是muda 那么就会施法使得JOJO 血量减一
当Dio有连续的后缀字符是zawaluduo 会使得JOJO瞬间没血
当JOJO有连续的后缀字符是zawaluduo 会使得Dio瞬间没血
如果同时发现zawaluduo 优先执行JOJO的。
判断最后谁赢了
做法:模拟一下就可以了。
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=(b);++i)
#define per(i,a,b) for(int i=a;i>=(b);--i)
#define mem(a,x) memset(a,x,sizeof(a))
#define pb push_back
#define pi pair<int, int>
#define mk make_pair
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
const int N=2e4+10;
char s[N],t[N];
int n,h1,h2;
void solve()
{
scanf("%d%d",&n,&h1);
cin>>s+1>>t+1;
h2=h1;
int flag;
string tmp="zawaluduo";
for(int i=3;i<=n&&h1&&h2;++i){
if(i>=9) {
int f=1;
for(int j=0,k=i-8;j<9;++j,++k) if(t[k]!=tmp[j]) f=0;
if(f) {
h1=0;break;
}
f=1;
for(int j=0,k=i-8;j<9;++j,++k) if(s[k]!=tmp[j]) f=0;
if(f) {
h2=0;break;
}
}
if(s[i-2]=='o'&&s[i-1]=='r'&&s[i]=='a') h2--;
if(i<4)continue;
if(t[i-3]=='m'&&t[i-2]=='u'&&t[i-1]=='d'&&t[i]=='a') h1--;
}
if(h1>h2) puts("Wryyyyy");
else if(h2>h1) puts("Hinnjaku");
else puts("Kono Dio da");
}
int main()
{
//ios::sync_with_stdio(false);
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int _;cin>>_;while(_--)
solve();
}
京公网安备 11010502036488号