CSU 1581Clock Pictures Hash
来源:互联网 发布:忙与闲 知乎 编辑:程序博客网 时间:2024/06/05 05:49
题目链接:点击打开链接
题意:
给出闹钟的n个指针当前所指的角度
求2个闹钟通过旋转后能否相同
思路:
先排个序保证偏序的关系,然后坐差,
枚举第二个串的哪一位和第一个串的第一字符匹配,然后hash判断
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <vector>#include <algorithm>template <class T>inline bool rd(T &ret) {char c; int sgn;if (c = getchar(), c == EOF) return 0;while (c != '-' && (c<'0' || c>'9')) c = getchar();sgn = (c == '-') ? -1 : 1;ret = (c == '-') ? 0 : (c - '0');while (c = getchar(), c >= '0'&&c <= '9') ret = ret * 10 + (c - '0');ret *= sgn;return 1;}template <class T>inline void pt(T x) {if (x <0) {putchar('-');x = -x;}if (x>9) pt(x / 10);putchar(x % 10 + '0');}using namespace std;const int N = 200105;typedef long long ll;const int MAGIC = 311, MOD = 1e9 + 7;template <class T>struct HASH{ll h[N], base[N];inline void init(T *s, int len) {h[0] = 1;for (int i = 1; i <= len; ++i) h[i] = (h[i - 1] * MAGIC % MOD + s[i - 1]) % MOD;base[0] = 1;for (int i = 1; i <= len; ++i) base[i] = (base[i - 1] * MAGIC) % MOD;}inline long long get(int l, int r) {return (h[r] - h[l - 1] * base[r - l + 1] % MOD + MOD) % MOD;}};HASH <int>A, B;int a[N], b[N], n;ll x[N], y[N];int main(){while (~scanf("%d", &n)){for (int i = 0; i < n; i++)rd(a[i]);for (int i = 0; i < n; i++)rd(b[i]);sort(a, a + n);sort(b, b + n);a[n] = a[0];b[n] = b[0];for (int i = 0; i < n; i++){a[i] = a[i + 1] - a[i]; if (a[i] < 0) a[i] += 360000;b[i] = b[i + 1] - b[i]; if (b[i] < 0) b[i] += 360000;}// for(int i = 0;i < n; i++)cout<<a[i]<<" "; puts(""); // for(int i = 0;i < n; i++)cout<<b[i]<<" "; puts(""); A.init(a, n);B.init(b, n);bool ok = A.get(1, n) == B.get(1, n);for (int i = 2; i <= n && ok == false; i++){int len = n - i;// printf("(%d,%d)-(%d,%d)\n", 1,len+1,i,n); // printf("(%d,%d)-(%d,%d)\n", len+2,n,1,i-1); if (A.get(1, len + 1) == B.get(i, n) && A.get(len + 2, n) == B.get(1, i - 1))ok = true;}if (ok)puts("possible");else puts("impossible");}return 0;}
0 0
- CSU 1581Clock Pictures Hash
- Sicily周赛 Clock Pictures
- CSU1581: Clock Pictures(KMP)
- KMP CSU1581 Clock Pictures
- CSU 1581 hash
- NCPC 2014 H clock pictures
- CF 2014 Nordic Collegiate Programming Contest H.Clock Pictures
- 【KMP】【最小表示法】NCPC 2014 H clock pictures
- H: Clock Pictures(kmp匹配循环的字符串 )
- pictures
- Pictures
- Clock Pictures(kmp + Contest2075 - 湖南多校对抗赛(2015.04.26))
- clock
- clock
- clock
- Clock
- CLOCK
- clock
- mysql的表分区技术
- IOS LocationManager定位国内偏移,火星坐标(GCJ-02)解决方法
- [LeetCode] Remove Nth Node From End of List
- 从汇编学习c++ 之 类的方法调用
- 添加远程库
- CSU 1581Clock Pictures Hash
- ONOS Blackbird性能评估
- SQLite实例——dummynote(记事本)
- Windows Tinyxml读取xml文件小结
- Firefox及Chrome访问Https类型Web站点报错
- (struts2) spring mvc + mybatis + maven整合
- ZOJ 1610
- Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceView和GLSurfaceView
- 第七周项目4——String类的构造