真题演练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

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

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

 

posted @ 2020-04-20 22:52  Y-KnightQin  阅读(124)  评论(0编辑  收藏  举报