zoukankan      html  css  js  c++  java
  • Snowflake Snow Snowflakes

    Miku

    hash一波

    然后拉链法散列表

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<vector>
    #include<algorithm>
    using namespace std;
    template<class T>inline void read(T &x)
    {
        x=0;register char c=getchar();register bool f=0;
        while(!isdigit(c))f^=c=='-',c=getchar();
        while(isdigit(c))x=(x<<3)+(x<<1)+(c^48),c=getchar();
        if(f)x=-x;
    }
    template<class T>inline void print(T x)
    {
        if(x<0)putchar('-'),x=-x;
        if(x>9)print(x/10);
        putchar('0'+x%10);
    }
    int n;
    int snow[100005][7];
    vector <int> has[100008];
    int mod=100007;
    bool cmp(int x,int y){
    	for(int i=0;i<=5;++i){
    		if(snow[x][0]==snow[y][i]){
    	//		cout<<i<<endl;
    			int f=0;
    			for(int j=1;j<=5;++j){
    				if(snow[x][j]!=snow[y][(i+j)%6]){
    					f=1;
    					break;
    				}
    			}
    			if(!f) return 1;
    			f=0;
    			for(int j=1;j<=5;++j){
    				if(snow[x][j]!=snow[y][(i-j+6)%6]){
    				//cout<<j<<endl;
    					f=1;
    					break;
    				}
    			}
    			if(!f) return 1;
    		}
    	}
    	return 0;
    }
    void add(int x){
    	int sum=0;
    	for(int i=0;i<=5;++i){
    		sum+=snow[x][i];
    	}
    	sum%=mod;
    	for(int ke=0;ke<has[sum].size();++ke){
    		if(cmp(x,has[sum][ke])){
    			cout<<"Twin snowflakes found.";
    			exit(0);
    		}
    	}
    	has[sum].push_back(x);
    }
    int main(){
    	read(n);
    	for(int i=1;i<=n;++i){
    		for(int j=0;j<6;++j){
    			read(snow[i][j]);
    			
    		}
    		add(i);
    	}
    	cout<<"No two snowflakes are alike.";
    	return 0;
    }
    
  • 相关阅读:
    css--盒子模型
    目标爬取社会信用码
    KFC-位置分页爬虫
    百度翻译-爬虫
    网页采集器-UA伪装
    python模块2
    python模块
    go入门
    python垃圾回收机制
    Python高级用法
  • 原文地址:https://www.cnblogs.com/For-Miku/p/15488999.html
Copyright © 2011-2022 走看看