题目链接:点击打开链接

下雪啦
Time Limit: 2500 MS Memory Limit: 32768 K
Total Submit: 184(32 users) Total Accepted: 33(10 users) Rating: Special Judge: No
Description

陈月亮最喜欢的季节就是冬天了,这不看着窗外飘起了雪花,陈月亮开心的跑出屋来看雪。但是迷迷糊糊的陈月亮不知道自己是在做梦还是真的下起了雪。突然她想起了一句话,在真实世界中是没有两片一样的雪花的。于是你的任务就是比较这场雪中的所有雪花,如果出现了两朵完全一致的雪花,则证明陈月亮是在梦中。

每朵雪花用六个整数表示,范围在(1 – 10000000)之间,表示雪花六个花瓣的长度,六个整数的先后出现顺序可能是顺时针顺序也可能是逆时针顺序,并且可能是从任意一个花瓣开始的。比如说对同一个花瓣,描述方法可能是1 2 3 4 5 6 或者 4 3 2 1 6 5

Input

第一行为一个整数T,表示有T组测试数据。

每组测试数据第一行为一个整数N(0 < N <= 100000),表示雪花的数目。

接下来n行每行六个整数,描述一朵雪花。

Output

如果没有相同的雪花,输出“No two snowflakes are alike.”,否则输出“Twin snowflakes found.”

Sample Input

1

2

1 2 3 4 5 6

4 3 2 1 6 5

Sample Output

Twin snowflakes found.

Source
2016级新生程序设计全国邀请赛

题解:对每两朵雪花进行hash,如果找到相同的雪花就不再进行之后的哈希操作。详细看代码。

AC代码:

#include<cstring>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
const int MAXN=100005;
const int MOD=99983; //hash函数,取余的数(我用的是素数),可以是其他数
int snow[MAXN][6];  //存储雪花信息
vector<int>Hash[MOD];//向量实现哈希表的存储
bool isSame(int a, int b)
{for(int i=0;i<6;i++){if(/*顺时针方向*/(snow[a][0] == snow[b][i] &&snow[a][1] == snow[b][(i+1)%6] &&snow[a][2] == snow[b][(i+2)%6] &&snow[a][3] == snow[b][(i+3)%6] &&snow[a][4] == snow[b][(i+4)%6] &&snow[a][5] == snow[b][(i+5)%6])|| /*逆时针方向*/(snow[a][0] == snow[b][(i+5)%6] &&snow[a][1] == snow[b][(i+4)%6] &&snow[a][2] == snow[b][(i+3)%6] &&snow[a][3] == snow[b][(i+2)%6] &&snow[a][4] == snow[b][(i+1)%6] &&snow[a][5] == snow[b][(i+0)%6]))return true;} return false;
}int T,N,ok;
int t;
int key;
int main()
{scanf("%d",&T);while(T--){ok=0;scanf("%d",&N);for(int i=0;i<MOD;i++){Hash[i].clear();}for(int i=0;i<N;i++){int tot=0;for(int j=0;j<6;j++){scanf("%d",&t);tot+=t;  //雪花六个花瓣的和snow[i][j]=t;}key=tot%MOD;  //求出keyHash[key].push_back(i);}//判断在hash表中hash[key]存储的雪花是否与雪花i相同for(int i=0;i<MOD;i++){if(ok)break;if(Hash[i].size()<2) continue;for(int j=0;j<Hash[i].size()-1;j++){for(int k=j+1;k<Hash[i].size();k++){if(isSame(Hash[i][j],Hash[i][k])){ok=1;break;}}}}if(ok)printf("Twin snowflakes found.\n");else printf("No two snowflakes are alike.\n");}return 0;
}

16哈理工新生赛 H 下雪啦 (哈希表)相关推荐

  1. 16哈理工新生赛 B 修建传送门 (双指针)

    题目链接:点击打开链接 修建传送门 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 104(29 users) Total Accept ...

  2. 16哈理工新生赛 C 方方正正 (证明题)

    方方正正 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 87(24 users) Total Accepted: 19(15 user ...

  3. 小乐乐与二段数(2019哈理工新生赛第20题)

    链接:2019哈理工新生赛题解 2019哈理工新生赛第20题 T题: 链接:https://ac.nowcoder.com/acm/contest/1877/T 来源:牛客网 题目描述 小乐乐从老师口 ...

  4. 2018大连理工新生赛解题报告

    Problem A: 打ACM真开心啊! 思路:假装没有这一题 roblem B: Zeratul与翻转黑白棋 思路:皮这一下很开心=W=! Problem C: Type-B型时间芯片 思路:算一下 ...

  5. 中矿新生赛 H 璐神看岛屿【BFS/DFS求联通块/连通块区域在边界则此连通块无效】...

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 璐神现在有张n*m大小的地图,地图上标明了陆地 ...

  6. 西南科技大学2021届新生赛 H.小凡出数据(构造)

    LINK 首先把输入的距离对从小到大排个序 那么距离为1,21,21,2的可以直接连起来 考虑距离为333的怎么办,设u,vu,vu,v间的距离为333 可能有两种来源,一是由1+21+21+2组成, ...

  7. 给定一组查找关键字(19,14,23,1,65,20,84,27,55,11,10,79) 哈希函数为:H(key)=key % 13, 哈希表长为m=15,设每个记录的查找概率相等。【MOOC】

    目   录 题 目①[关键字(19, 14, 23, 1, 65, 20, 84, 27, 55, 11, 10, 79)] 解法一(线性探测再散列) 解法二(链地址法) 题 目②[关键字(19, 1 ...

  8. 【weJudge】1106. [ACM][2014新生赛重现][现场]Gundam Unicorn

    你上有一门威力巨大的光束炮,然而它现在剩下的能量只能再发射一次.为了使敌人受到更大的损失,你必须谨慎地使用这仅剩的一次机会. 敌军队形和光束炮的覆盖范围均为矩形(矩形不可旋转). 输入要求 输入数据有 ...

  9. BUUCTF-MISC-[BJDCTF2020]你猜我是个啥~[ACTF新生赛2020]outguess

    文章目录 1.[BJDCTF2020]你猜我是个啥 2.秘密文件 3.[SWPU2019]神奇的二维码 4.[BJDCTF2020]一叶障目 5.[BJDCTF2020]just_a_rar 6.[B ...

最新文章

  1. mlcc激光雷达与相机外参标定初体验
  2. 老年机按键串号_2019年最适合买的老人机——AGM M5,4G全网通+支持微信
  3. Java发送邮件正文带表格
  4. linux系统下pid的取值范围了解一下
  5. 微信分享接口示例(设置标题、缩略图、连接、描述),附demo下载
  6. 使命召唤16正在获取cdn地址_玩机不求人 | 简单教程,爽玩《使命召唤:战区》攻略!...
  7. laya 怎么生成签名_PHP开发API接口签名生成及验证
  8. android_secure写权限,android.permission.WRITE_SECURE_SETTINGS权限报错
  9. 贪心策略——活动选择问题
  10. 解码(二):音视频解码上下文创建配置和打开avcodec_open2打开演示
  11. 如何系统的自学python-如何系统学习python
  12. 使用AJAX时出现“Microsoft JScript 运行时错误: 'Sys' 未定义”提示的解决方法
  13. android小应用帮美女更衣系列二(附源码)
  14. xu2w显示屏软件下载_led显示屏控制软件下载
  15. 即时通讯服务服务器 ejabberd、jabber、jabberd、xmpp简介
  16. oracle数据库alter的用法,数据库中alter的用法
  17. Unity编辑器修改图片的大小
  18. 链表的中间结点--快慢指针思想
  19. linux服务器6t硬盘分区,linux多块6T大硬盘分区挂载GPT分区
  20. 【优化求解】基于matlab禁忌搜索算法求解函数极值问题【含Matlab源码 1204期】

热门文章

  1. 飞机一般是什么操作系统?
  2. 想了解更多的话就请加QQ或者访问我的新浪博客
  3. MyEclipse老是提示 resetting selection 长耗时的问题
  4. 怎么通过iTools解决闪退,应用无法安装激活的办法
  5. *4-2 CCF 2014-12-2 Z字形扫描
  6. JavaScript 科技推动进步
  7. TypeScript:Aho–Corasick算法实现敏感词过滤
  8. 6.网络基础-Network Monitor和Httpwatch工具
  9. matlab中的rand函数(用于产生随机数)
  10. Web 安全工具篇:Burp Suite 使用指南