Problem H: Clock Pictures

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 73  Solved: 18
[Submit][Status][Web Board]

Description

Input

Output

Sample Input

6
1 2 3 4 5 6
7 6 5 4 3 1

Sample Output

impossible

HINT

题意:给你角度,问你通过旋转a图和b图能否重合;

思路:KMP;(比赛的时候,忘记是环了。。。还好队友给力!)

我的代码:

#include<stdio.h>
#include<algorithm>
#include<string.h>
#define mmax 200005
#define mod 360000
#define mem(a) memset(a,0,sizeof(a));
using namespace std;
int a[mmax],b[mmax],nnext[mmax];
int c[mmax*];
int t,n;
void getnext()
{
int i=,k=-;
nnext[]=-;
int len=n-;
while(i<len)
{
if(a[i]==a[k]||k==-)
{
i++;
k++;
nnext[i]=k;
}
else
k=nnext[k];
}
}
void kmp()
{
int i=,j=;
int lena=n-;
int lenc=*n-;
// int cnt=0;
while(i<lenc&&j<lena)
{
if(a[j]==c[i]||j==-)
{
i++;
j++;
}
else
j=nnext[j];
}
if(j!=lena)
t=;
//else
// printf("i=%d\tj=%d\n",i,j);
} int main()
{
int i;
while(scanf("%d",&n)!=EOF)
{
mem(a);
mem(b);
mem(c);
// mem(c);
for(i=;i<n;i++)
scanf("%d",&a[i]);
for(i=;i<n;i++)
scanf("%d",&b[i]);
sort(a,a+n);
sort(b,b+n);//printf("%d\t%d\n",a[i],b[i]);
c[n-]=(b[]-b[n-]+mod)%mod;
for(i=;i<n;i++)
{
a[i-]=(a[i]-a[i-]+mod)%mod;
b[i-]=(b[i]-b[i-]+mod)%mod;
c[i-]=c[i-+n]=b[i-];
} getnext();
t=;
kmp();
if(t)printf("impossible\n");
else printf("possible\n");
}
return ;
}

队友代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
#define ls 2*i
#define rs 2*i+1
#define up(i,x,y) for(i=x;i<=y;i++)
#define down(i,x,y) for(i=x;i>=y;i--)
#define mem(a,x) memset(a,x,sizeof(a))
#define w(a) while(a)
#define LL long long
const double pi = acos(-1.0);
#define Len 200005
#define mod 360000
const int INF = 0x3f3f3f3f;
#define exp 1e-6 int n,a[Len],b[Len],s[Len*],next1[Len]; void get_next()
{
next1[] = ;
int i;
up(i,,n-)
{
int t = i-;
t = next1[t];
w(t!= && a[t+]!=a[i]) t = next1[t];
t++;
if(a[t]==a[i]) next1[i] = t;
else next1[i] = ;
}
} int main()
{
int i,j,k;
w(~scanf("%d",&n))
{
up(i,,n-)
scanf("%d",&a[i]);
up(i,,n-)
scanf("%d",&b[i]);
sort(a,a+n);
sort(b,b+n);
down(i,n-,)
a[i]=(a[i]-a[i-]+mod)%mod;
up(i,,n-)
s[i]=s[i+n]=b[i];
down(i,*n-,)
s[i]=(s[i]-s[i-]+mod)%mod;
int flag = ;
int pos = ;
get_next(); up(i,,*n-)
{
if(s[i]!=a[pos])
{
int tem = next1[pos-];
w(tem && s[i]!=a[tem+])
tem = next1[tem];
tem++;
if(a[tem]==s[i]) pos = tem+;
else pos = ;
}
else pos++;
if(pos == n)
{
flag = ;
break;
}
}
printf("%d\t%d\n",i,n);
printf("%s\n",flag?"possible":"impossible");
} return ;
} /**************************************************************
Problem: 1581
User: aking2015
Language: C++
Result: Accepted
Time:276 ms
Memory:5396 kb
****************************************************************/

Clock Pictures(kmp + Contest2075 - 湖南多校对抗赛(2015.04.26))的更多相关文章

  1. Contest2073 - 湖南多校对抗赛(2015.04.06)

    Contest2073 - 湖南多校对抗赛(2015.04.06) Problem A: (More) Multiplication Time Limit: 1 Sec  Memory Limit:  ...

  2. Contest2071 - 湖南多校对抗赛(2015.03.28)

    Contest2071 - 湖南多校对抗赛(2015.03.28) 本次比赛试题由湖南大学ACM校队原创 http://acm.csu.edu.cn/OnlineJudge/contest.php?c ...

  3. 湖南多校对抗赛(2015.05.03)Problem A: Twenty-four point

    给四个数 问能不能算出24点...我的方法比较烂...920ms 差点TLE.应该有更好的方法. #include<stdio.h> #include<string.h> #i ...

  4. 湖南多校对抗赛(2015.05.03)Problem B: War

    并查集.从后往前加边. #include<stdio.h> #include<string.h> #include<math.h> #include<algo ...

  5. Contest2089 - 湖南多校对抗赛(2015.05.31) Swipe(csu1648)

    Problem E: Swipe Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 100  Solved: 15[Submit][Status][Web ...

  6. Aquarium Tank(csu1634+几何+二分)Contest2087 - 湖南多校对抗赛(2015.05.24)-G

    Aquarium Tank Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 15  Solved: 4[Submit][Status][Web Board ...

  7. Heaps(Contest2080 - 湖南多校对抗赛(2015.05.10)(国防科大学校赛决赛-Semilive)+scu1616)

    Problem H: Heaps Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 48  Solved: 9[Submit][Status][Web Bo ...

  8. Contest2075 - 湖南多校对抗(csu1576)大数 Catalan Square

    Problem C: Catalan Square Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 42  Solved: 16[Submit][Stat ...

  9. CSU 2136 ——湖南多校对抗赛 I

    2136: 统帅三军! Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 55     ...

随机推荐

  1. docker安装镜像

    CMD 容器启动命令 CMD指令用于为执行容器提供默认值.每个Dockerfile只有一个CMD命令,如果指定了多个CMD命令,那么只有最后一条会被执行,如果启动容器的时候指定了运行的命令,则会覆盖掉 ...

  2. Centos7.0进入单用户模式修改root密码

    启动Centos7 ,按空格让其停留在如下界面. 按e进行编辑 在UTF-8后面输入init=/bin/sh 根据提示按ctrl+x 得如下图 输入mount -o remount,rw /  然后输 ...

  3. postgresql vacuum操作

    postgresql vacuum操作 PostgreSQL数据库管理工作中,定期vacuum是一个重要的工作.vacuum的效果: 1.1释放,再利用 更新/删除的行所占据的磁盘空间. 1.2更新P ...

  4. Delphi使用iTools安卓模拟器

    Delphi使用iTools安卓模拟器 1.去官网下载或https://pc.qq.com/detail/11/detail_22131.html 2.安装后,需要通过设置功能,设置一下分辩率,变成手 ...

  5. Android-普通变量与普通方法内存图

    描述Worker对象: package android.java.oop11; // 描述Worker public class Worker { public String name; public ...

  6. Centos7中docker开启远程访问

    在作为docker远程服务的centos7机器中配置: 1.在/usr/lib/systemd/system/docker.service,配置远程访问.主要是在[Service]这个部分,加上下面两 ...

  7. 抽取JDBC工具类并增删改查

    抽取工具类: package demo; /* * 工具类 */ import java.sql.Connection; import java.sql.DriverManager; import j ...

  8. 写你的shell,其实很简单[架构篇]

    引语:我本人以前并没有写过shell脚本,也许是因为懒,也许是没有被逼到要去写shell的地步.但是,前段时间,工作需求,要求重新跑几个月的脚本,这些脚本是每天定时进行跑的,而且每天是好几个脚本一起关 ...

  9. jdk-tomcat-jenkens 安装

    1--安装JDK 下载JDK放到你需要的目录,解压,然后添加环境变量 2--安装tomcat 从官方网站下载tomcat的安装包,然后解压 启动tomcat , TOMCAT的默认端口是8080,要记 ...

  10. 来了!阿里开源分布式事务解决方案 Fescar

    摘要: 阿里妹导读:广为人知的阿里分布式事务解决方案:GTS(Global Transaction Service),已正式推出开源版本,取名为“Fescar”,希望帮助业界解决微服务架构下的分布式事 ...