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. noip第16课资料

  2. Alpha冲刺 - (6/10)

    Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 - 过去两天完成了哪些任务 1. 基于ssm框架的前后端交互 ...

  3. Redis 基础、高级特性与性能调优

    本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍.之后概览Redis提供的高级能力,并在部署.维护.性能调优等多个方面进行更深入的介绍和指导. ...

  4. InstallShield 创建 visual studio 工程的时候 指向 任意 visual studio 版本 方法 (修改 计算机 默认 visual studio shell 版本)

    这需要 修改 计算机 默认 visual studio shell 版本 注册表 HKEY_CLASSES_ROOT VisualStudio.DTE 配置节点 描述的是 默认的 visual stu ...

  5. tk.mybatis通用工具采坑记

    tk.mybatis通用工具pom <!--mybatis依赖--> <dependency> <groupId>org.mybatis.spring.boot&l ...

  6. MySQL 组提交(group commit)

    目录 前言 改进 原理 实现 参数 注意 前言 操作系统使用页面缓存来填补内存和磁盘访问的差距 对磁盘文件的写入会先写入道页面缓存中 由操作系统来决定何时将修改过的脏页刷新到磁盘 确保修改已经持久化到 ...

  7. saltstack 初始化LINUX系统

    前面我们已经了解了saltstack的基础功能,现在就可以使用saltstack为初始化新安装的linux系统. 初始化列表: 1.关闭selinux 3.修改sshd配置文件 4.内核优化 5.ul ...

  8. python numpy安装

    一.python下的numpy安装方法 第一步:安装python,这里不做介绍. 第二步:打开cmd看python是否安装成功. 第三步:输入 python -m pip install -U pip ...

  9. 把本地项目放进新建的仓库(idea)

    1,获取仓库地址 比如: git@bitbucket.org:360717118/springboot_servlet-filter-listener-file.git,   2,idea 设置:

  10. [git与github]__git与github简单了解

    前言 关于版本控制,版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 我们通过版本控制系统可以解决的问题:可以非常方便的查看我们的源码文件的历代更新版本.或将我们的项目源 ...