#include#include#include#include#include#include#include#include#include#ifdefWIN32#definefmt64"%I64d"#else#definefmt64"%lld"#endif#definePIM_PI#" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

wordcraft(陳高遠(yuǎn))

系統(tǒng) 2721 0
    #include <cstdio>

#include <cmath>

#include <cstdlib>

#include <cstring>

#include <ctime>

#include <cctype>

#include <vector>

#include <map>

#include <set>

#include <algorithm>

#ifdef WIN32

#define fmt64 "%I64d"

#else

#define fmt64 "%lld"

#endif

#define PI M_PI

#define oo 0x13131313

#define iter iterator

#define fst first

#define snd second

#define PB push_back

#define MP make_pair

#define FOR(i, j, k) for (i = (j); i <= (k); ++i)

#define ROF(i, j, k) for (i = (j); i >= (k); --i)

#define FER(i, j, k) for (edge *i = j[k]; i; i = i->n)

#define FRE(i, a) for (i = a.begin(); i != a.end(); ++i)

using namespace std;

template<class T> inline bool minim(T &a, const T &b) {return b < a ? a = b, 1 : 0;}

template<class T> inline bool maxim(T &a, const T &b) {return b > a ? a = b, 1 : 0;}

template<class T> inline T sqr(const T &a) {return a * a;}

typedef unsigned int uint;

typedef long long int64;

typedef unsigned long long uint64;

typedef long double real;

#define maxn 100002

struct edge{int t; edge *n;}es[maxn], *adj = es, *lst[maxn];

void link(int i, int j)

{

    *(++adj) = (edge){j, lst[i]}, lst[i] = adj;

}

int sg[maxn], sgs[maxn]; bool ok[maxn];

struct function_get_sg

{

    int flag, f[maxn]; bool root;

    void dfs(int u, int sum)

    {

        if (u) {

            f[sum ^ sgs[u]] = flag;

            if (root && !(sum ^ sgs[u]))

                ok[u] = 1;

        }

        FER(e, lst, u) dfs(e->t, sum ^ sgs[u] ^ sg[e->t]);

    }

    void operator()(int u)

    {

        root = !u;

        FER(e, lst, u) sgs[u] ^= sg[e->t];

        ++flag, dfs(u, 0);

        for (int i = 0; ; ++i) if (f[i] != flag) {sg[u] = i; return;}

    }

} get_sg;

void dfs(int u)

{

    FER(e, lst, u)

        dfs(e->t);

    get_sg(u);

}

int n, maxLen; char st[maxn][105], *tt;

inline bool prefix(char *s, char *t)

{

    for (; *t; ++s, ++t) if (!*s || *s != *t) break;

    return !*s;

}

void input()

{

    int i, j; static int fa[maxn];

    scanf("%d%d\n", &n, &maxLen);

    FOR(i, 1, n) {

        char *c = st[i], *s = c;

        for (; ~(*c = getchar()) && *c != '\n'; ++c);

        *c = 0;

        for (j = i - 1; j && !prefix(st[j], s); j = fa[j]);

        link(j, i), fa[i] = j;

    }

}

void print()

{

    int i, j = 0;

    FOR(i, 1, n) if (ok[i]) {

        char *s = st[i];

        for (; *s; ++s)

            if (putchar(*s), ++j == 50) putchar('\n'), j = 0;

    }

}

int main()

{

    input();

    dfs(0);

    if (!sg[0]) puts("Can’t win at all!!"), exit(0);

    print();

}
  


wordcraft(陳高遠(yuǎn))


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 白沙| 秀山| 民权县| 大同市| 藁城市| 南郑县| 易门县| 峨眉山市| 化隆| 唐河县| 山丹县| 浦城县| 麻栗坡县| 资中县| 黎川县| 高邮市| 鄂托克前旗| 离岛区| 岱山县| 如皋市| 商都县| 宿松县| 曲麻莱县| 广东省| 新竹县| 中阳县| 齐齐哈尔市| 曲沃县| 武平县| 南宫市| 扶绥县| 托里县| 普兰县| 阜南县| 怀化市| 聂荣县| 巴中市| 柳河县| 旬邑县| 汶上县| 漳州市|