这题看起来难,题面有点长,读懂就是水题一个了。

题意:有两个人: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();
}