zoukankan      html  css  js  c++  java
  • Clock Pictures CSU

    #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
    ");
                break;
            }
        }
        if(f1==0)
        	printf("impossible
    ");
    } 
    
  • 相关阅读:
    网页动画
    浮动
    定位
    盒子模型
    表单
    2017年07月05号课堂笔记
    2017年07月07号课堂笔记
    2017年07月03号课堂笔记
    2017年06月30号课堂笔记
    2017年06月28号课堂笔记
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12383517.html
Copyright © 2011-2022 走看看