sdut B - 【红色】北理工的恶龙(这题有点坑)

标题sdut B - 【红色】北理工的恶龙

北理工的恶龙其实并没有被完全杀死,但是恶龙的身体却发生了很大的变化。恶龙仍然长有n个头,但经过了勇士的调教,恶龙变得善良了一些。它的n个头每个头要么仍是邪恶的头,用"1"表示,要么已经变得善良,用"0"表示,因而恶龙的n个头就可以用n位01串来表示。你作为被选召的勇士,目标是把所有的龙头都变成0000⋯00

完全善良的龙头。每一次,你可以砍掉龙最右侧的一个头,同时龙会在最左侧长出新的一个头,以保证龙头数量不变。如果你砍掉的是一个1,即邪恶的头,你可以决定龙在最左侧会长出什么样的头;但如果你砍掉了一个善良的头,那么玻璃心的龙龙将会在左侧不受控制的长出一个随机的头,既可能是善良的头,也可能是邪恶的头,而且对你错杀无辜的它总会与你作对阻挠你,尽力的破坏你的计划。

注意,这个问题可能没有你想的那么简单。显然,你必须把一些1变成0,这样才能让1的数量减少并消失。但是如果只是简单的每次把1变成0,最终不见得能取胜。比如,如果龙头的状态是101,那么去掉最右边的1并选择在左边长出一个0,则龙头会变成010;再把010右边的0去掉后,如果左边仍长出一个1,则龙头又变回了101的状态,如此反复,将永远不能得到000。

现在给你一个恶龙头的初始状态,即一个01串,请判断能否在有限步之内让全部的龙头都变成善良的龙头。
Input

输入第一行T,T≤1000

,表示用例组数。

之后T
行,每行一个01串S表示龙头的初始状态,"0"表示善良的头,"1"表示邪恶的头。|S|<100

Output
能否将全部的龙头变成善良的头,可以的话输出"kind longlong",不可以则输出"evil longlong"(不含引号)。
Example

Input
1
1111

Output

kind longlong

哇!这个题我写的时候感觉自己快崩了,(毕竟我是个渣渣),找了半天的样例,愣是把自己找晕了,我绝对不说是第三段把我思路带飞了,等再次尝试提交一次时(心里很没底),然后它竟然a了,恍然大悟,原来一开始想的全是浮云…
直接上代码吧。

AC代码

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdlib>
using namespace std;
int main()
{
    int n;
    cin>>n;
    string l;
    while(n--)
    {
        cin>>l;
        cout<<"kind"<<" "<<"longlong"<<endl;

    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43820242/article/details/87885333
今日推荐