1 条题解

  • 0
    @ 2025-8-24 21:45:19

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Expecto
    **

    搬运于2025-08-24 21:45:19,当前版本为作者最后更新于2016-09-30 13:31:30,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    记忆化搜索简单易懂。

    RT,用map存一个字符串的方案数,每次四种情况累加起来

    #include<bits/stdc++.h>
    using namespace std;
    string s;
    map<string,int> f;
    int find(string x){
        if (f[x]!=0) return f[x];
        int tmp=1;
        int l=x.size();
        for (int i=1;i*2<l;i++){
            if (x.substr(0,i)==x.substr(l-i,i)) 
                tmp+=find(x.substr(i,l-i))+find(x.substr(0,l-i));
            if (x.substr(0,i)==x.substr(i,i))
                tmp+=find(x.substr(i,l-i));
            if (x.substr(l-2*i,i)==x.substr(l-i,i)) 
                tmp+=find(x.substr(0,l-i));
        }
        return f[x]=tmp%2014;
    }
    int main(){
        cin>>s;
        cout<<(find(s)+2014-1)%2014;
        return 0;
    }
    
    • 1

    信息

    ID
    2166
    时间
    1000ms
    内存
    125MiB
    难度
    5
    标签
    递交数
    0
    已通过
    0
    上传者