Clock Pictures CSU - 1581
#include<cstdio>
#include<iostream>
#include<cstring>
#include<memory>
#include<algorithm>
using namespace std;
#define mod 360000
int a[200005],b[200005];
int c[200005],d[200005*2];
int ne[200005];
int sum;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
cin>>b[i];
sort(a+1,a+1+n);
sort(b+1,b+1+n);
for(int i=1;i<=n-1;i++)
c[i]=a[i+1]-a[i];
c[n]=a[1]-a[n]+mod;
for(int i=0;i<=n-1;i++)
d[i]=b[i+1]-b[i];
b[n]=b[1]-b[n]+mod;
for(int i=n+1;i<=2*n;i++)
d[i]=d[i-n];
//模板串
for(int i = 2, j = 0; i <= n; i ++ )
{
while (j && c[i] != c[j + 1])
j = ne[j];
if (c[i] == c[j + 1])
j ++ ;
ne[i] = j;
}
int f1=0;
for (int i = 1, j = 0; i <= 2*n; i ++ ) {
while (j && d[i] != c[j + 1]) //当j没有退回起点,并且当前的s[i]不能和下一个j的位置匹配
j = ne[j];//移动,保证之前的相等 直到匹配位置,或者j已经到开头了
if (d[i] == c[j + 1]) //如果已经匹配了
j ++ ; //j往下移动
if (j == n) {//说明匹配成果
printf("possible\n");
break;
}
}
if(f1==0)
printf("impossible\n");
}
分类:
kmp
标签:
CSU-ACM2020寒假集训
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥