Clock Pictures(kmp + Contest2075 - 湖南多校对抗赛(2015.04.26))
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))的更多相关文章
- Contest2073 - 湖南多校对抗赛(2015.04.06)
Contest2073 - 湖南多校对抗赛(2015.04.06) Problem A: (More) Multiplication Time Limit: 1 Sec Memory Limit: ...
- Contest2071 - 湖南多校对抗赛(2015.03.28)
Contest2071 - 湖南多校对抗赛(2015.03.28) 本次比赛试题由湖南大学ACM校队原创 http://acm.csu.edu.cn/OnlineJudge/contest.php?c ...
- 湖南多校对抗赛(2015.05.03)Problem A: Twenty-four point
给四个数 问能不能算出24点...我的方法比较烂...920ms 差点TLE.应该有更好的方法. #include<stdio.h> #include<string.h> #i ...
- 湖南多校对抗赛(2015.05.03)Problem B: War
并查集.从后往前加边. #include<stdio.h> #include<string.h> #include<math.h> #include<algo ...
- Contest2089 - 湖南多校对抗赛(2015.05.31) Swipe(csu1648)
Problem E: Swipe Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 100 Solved: 15[Submit][Status][Web ...
- 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 ...
- 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 ...
- Contest2075 - 湖南多校对抗(csu1576)大数 Catalan Square
Problem C: Catalan Square Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 42 Solved: 16[Submit][Stat ...
- CSU 2136 ——湖南多校对抗赛 I
2136: 统帅三军! Submit Page Summary Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 55 ...
随机推荐
- 将json对象转化成jsonp对象
这个Demo用来检查是否具有唯一性 //检查 /user/check/{param}/{type} @RequestMapping("/check/{param}/{type}") ...
- Nginx 教程
开源版:http://nginx.org 商业版:http://nginx.com 阿里Tengine OpenResty开源版.商业版 视频教程:哔哩哔哩 菜鸟教程:nginx安装 1.初识 Nig ...
- jenkins net编译部署 笔记 tips
1 忘记密码 的话,C:\Users\quyongshuo.jenkins\config.xml 修改 true 为false 重新启动 可以重新设置用户信息. 2 修改端口 Java -jar je ...
- [UWP]使用Popup构建UWP Picker
在上一篇博文<[UWP]不那么好用的ContentDialog>中我们讲到了ContentDialog在复杂场景下使用的几个令人头疼的弊端.那么,就让我们在这篇博文里开始愉快的造轮子之旅吧 ...
- 背水一战 Windows 10 (74) - 控件(控件基类): UIElement - 与 CanDrag 相关的事件, 与 AllowDrop 相关的事件
[源码下载] 背水一战 Windows 10 (74) - 控件(控件基类): UIElement - 与 CanDrag 相关的事件, 与 AllowDrop 相关的事件 作者:webabcd 介绍 ...
- rabbitMq 初步
RabbitMQ的工作原理 它的基本结构 组成部分说明如下: Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue. Exchange:消息队列交换机,按一定的规则将消息路 ...
- 五花八门的CSS
一.颜色 rgba(0, 0, 0, 0.5) rgba括号中前3个数字代表着 red green blue三种颜色的rgb值,0-255,最后一个是设定这个颜色的透明度即alpha值.范围从0到1, ...
- elasticsearch学习之根据发布时间设置衰减函数
衰减函数decay functionion 高斯衰减 GET _search { "_source": ["title","release_date& ...
- 如何使用react-redux——傻瓜版
概述 之前看redux官方文档真是看得一脸懵逼,现在自认为会用了,于是来总结一下用法,供以后开发时参考,相信对其他人也有用. 不得不说,用了redux之后感觉挺爽的,有如下优点: 组件大多是函数组件非 ...
- B - Red and Black 问题思考
红黑地板问题 There is a rectangular room, covered with square tiles. Each tile is colored either red or bl ...