真题演练2

Posted y-knightqin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了真题演练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

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

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

 

以上是关于真题演练2的主要内容,如果未能解决你的问题,请参考以下文章

华为OD机试真题Java实现单词反转真题+解题思路+代码(2022&2023)

华为OD机试真题Python实现翻转单词顺序真题+解题思路+代码(2022&2023)

华为OD机试真题Java实现匿名信真题+解题思路+代码(2022&2023)

华为OD机试 - 单词反转(Python)| 真题含思路

Flutter学习-多子布局Widget

面试系列二:精选大数据面试真题JVM专项-附答案详细解析