码迷,mamicode.com
首页 > 其他好文 > 详细

真题演练2

时间:2020-04-20 23:22:15      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:ons   main   show   打印   前缀   真题   const   bit   code   

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

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

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

 

真题演练2

标签:ons   main   show   打印   前缀   真题   const   bit   code   

原文地址:https://www.cnblogs.com/Y-Knightqin/p/12728563.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!