• 真题演练2


    ACM-ICPC 2017 Asia Qingdao

    B. Chenchen, Tangtang and ZengZeng

    签到题

    I. The Squared Mosquito Coil

    打印题,原来区域赛也会出这种题目,无语……

    总结:遇到这种情况,冷静才是最重要的。

    J. Suffix

    按理来说暴力是会超时的,但是题目数据较水?变成了一道暴力题。那就优化一下吧,这里看到别人的做法有 二分找最长前缀+字符串hash来加速

    同时这题要用上逆向思维,要从后往前推,才能满足最优情况。

    #include <bits/stdc++.h>
    #define debug freopen("r.txt","r",stdin)
    #define mp make_pair
    #define ri register int 
    using namespace std;
    typedef long long ll;
    typedef unsigned long long ull;
    const int maxn = 2e5+10;
    const int INF = 0x3f3f3f3f; 
    const int mod = 998244353;
    const int base = 233;
    inline ll read(){ll s=0,w=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
    return s*w;}
    ll qpow(ll p,ll q){return (q&1?p:1)*(q?qpow(p*p%mod,q/2):1)%mod;}
    int T,n,i,len[maxn],pos,nowlen,j,l,r,mid;
    string s[maxn];
    ull Hash[maxn];
    ull pw[maxn];
    void init()
    {
        pw[0]=1;
        for (ri i=1;i<=maxn;i++) pw[i]=pw[i-1]*base;
    }
    ull getHash(int l,int r)
    {
        return Hash[r]-Hash[l-1]*pw[r-l+1];
    }
    int main()
    {
        T=read();
        init();
        while (T--)
        {
            n=read();
            for (i=1;i<=n;i++)
            {
                cin>>s[i];
                len[i]=s[i].size();
            }
            s[0]="";
            for (i=n;i;i--)
            {
                pos=1;
                nowlen=s[i].size();
                for (j=0;j<nowlen;j++) Hash[j+1]=Hash[j]*base+(s[i][j]-'a');
                for (j=1;j<=len[i];j++)
                {
                    l=0,r=nowlen-j+1;
                    while (l<r)
                    {
                        mid=(l+r+1)>>1;
                        if (getHash(pos,pos+mid-1)==getHash(j,j+mid-1)) l=mid;
                            else r=mid-1;
                    }
                    if(pos-l+1<nowlen&&s[i][pos-1+l]>s[i][j-1+l])
                    {
                        pos=j;
                    }
                }
                s[i-1]+=s[i].substr(pos-1,nowlen-pos+1);
            }
            cout<<s[0]<<endl;
        }
        return 0;
    }
    View Code

    K. Our Journey of Xian Ends

    首先题目一大串,看懂题意之后,就会知道这题是费用流了,建图套模板即可。

    总结:是时候整理一波属于自己的模板了。

  • 相关阅读:
    2017年陕西省网络空间安全技术大赛WP
    XDCTF2014 Writeup
    TensorFlow入门测试程序
    python计算器
    CentOS安装crontab及使用方法
    在Linux 双机下自己手动实现浮动ip技术
    CentOS 7下安装配置FTP
    encodeURI 解码 编码
    jquery 消息提醒插件 toastmessage
    搭通自己的电脑与GitHub的传输通道
  • 原文地址:https://www.cnblogs.com/Y-Knightqin/p/12728563.html
Copyright © 2020-2023  润新知