zoukankan      html  css  js  c++  java
  • BZOJ 3916 friends

    暴力。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define maxn 2000050
    using namespace std;
    char s[maxn];
    int l;
    bool l_match()
    {
        int p1=1,p2=l/2+1,ret=0;
        while ((p1<=l/2) && (p2<=l))
        {
            if (s[p1]!=s[p2]) {p2++;ret++;if (ret==2) return false;}
            if (s[p1]==s[p2]) {p1++;p2++;}
        }
        return true;
    }
    bool r_match()
    {
        int p1=1,p2=l/2+2,ret=0;
        while ((p1<=l/2+1) && (p2<=l))
        {
            if (s[p1]!=s[p2]) {p1++;ret++;if (ret==2) return false;}
            if (s[p1]==s[p2]) {p1++;p2++;}
        }
        return true;
    }
    bool l_r_match()
    {
        for (int i=1;i<=l/2;i++)
            if (s[i]!=s[i+l/2+1]) return false;    
        return true;
    }
    int main()
    {
        scanf("%d",&l);
        scanf("%s",s+1);
        if (!(l&1)) {printf("NOT POSSIBLE
    ");return 0;}
        bool f1=l_match(),f2=r_match();
        if ((!f1) && (!f2)) printf("NOT POSSIBLE
    ");
        else if (f1 && f2)
        {
            if (!l_r_match())
                printf("NOT UNIQUE");
            else
                for (int i=1;i<=l/2;i++)
                    printf("%c",s[i]);
            printf("
    ");    
        }
        else if (f1)
        {
            for (int i=1;i<=l/2;i++)
                    printf("%c",s[i]);
            printf("
    ");
        }
        else
        {
            for (int i=l/2+2;i<=l;i++)
                    printf("%c",s[i]);
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    Boost练习程序(program_options)
    vim一般设置
    删除文件夹及其子文件
    linux搜索一个文件
    窗口最大最小化
    3dmax 学习
    打造个人电脑安全终极防线
    Cacls Command Question
    vc++学习(六)——代码学习
    学习3dmax(四)
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/6360379.html
Copyright © 2011-2022 走看看