C++-POJ1021-2D-Nim[hash]
哈希,对于每个点哈希一次
哈希的方式:该点到联通分量边界(上下左右)的距离和
然后分别对两个图的n个点按hash值排序,判断是否相等即可
- #include <set>
- #include <map>
- #include <cmath>
- #include <queue>
- #include <vector>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- struct point{int x,y;}p[];
- int T,W,H,n,flag,a[][],hash[][];
- int main(){
- for(scanf("%d",&T);T--;){
- scanf("%d%d%d",&W,&H,&n);
- memset(hash,,sizeof(hash));
- for(int c=;c<=;c++){
- memset(a,,sizeof(a));
- for(int i=;i<=n;i++)scanf("%d%d",&p[i].x,&p[i].y),a[p[i].x][p[i].y]=;
- for(int i=;i<=n;i++){
- int px=p[i].x,py=p[i].y;
- for(int x=px+;x<W &&a[x][py];x++)hash[c][i]++;
- for(int x=px-;x>=&&a[x][py];x--)hash[c][i]++;
- for(int y=py+;y<H &&a[px][y];y++)hash[c][i]++;
- for(int y=py-;y>=&&a[px][y];y--)hash[c][i]++;
- }
- sort(hash[c]+,hash[c]+n+);
- }
- flag=true;for(int i=;i<=n;i++)if(hash[][i]!=hash[][i]){flag=false;break;}
- cout<<(flag?"YES":"NO")<<endl;
- }
- return ;
- }
C++-POJ1021-2D-Nim[hash]的更多相关文章
- 狗狗40题~ (Volume C)
A - Triangles 记忆化搜索呗.搜索以某三角形为顶的最大面积,注意边界情况. #include <stdio.h> #include <cstring> #inclu ...
- 一位学长的ACM总结(感触颇深)
发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...
- Hash Length Extension Attacks
catalogue . Hash函数的内部原理 . 漏洞原理 1. Hash函数的内部原理 0x1: 分组.Padding 哈希函数以区块为单位操作数据.比如说,MD5, SHA1, SHA256的区 ...
- hdu.1067.Gap(bfs+hash)
Gap Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- BZOJ 1874 取石子游戏 (NIM游戏)
题解:简单的NIM游戏,直接计算SG函数,至于找先手策略则按字典序异或掉,去除石子后再异或判断,若可行则直接输出. #include <cstdio> const int N=1005; ...
- 基于USB网卡适配器劫持DHCP Server嗅探Windows NTLM Hash密码
catalogue . DHCP.WPAD工作过程 . python Responder . USB host/client adapter(USB Armory): 包含DHCP Server . ...
- 【博弈论】浅谈泛Nim游戏
Nim游戏在ACM中碰到了,就拎出来写写. 一般Nim游戏:有n堆石子,每堆石子有$a_i$个,每次可以取每堆石子中$[0,a_i-1]$,问先手是否有必胜策略. 泛Nim游戏:每堆石子有$a_i$个 ...
- Unity3D初学之2D动画制
作者:Alex Rose Unity最近宣布推出额外的2D游戏支持,添加了Box 2D物理和一个精灵管理器. 但这里还是有些技巧需要牢记在心.逐帧更改图像只是动画制作的冰山一角,若要让你的游戏出色运行 ...
- caffe openpose/Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields配置(转)
Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields 是CVPR2017的一篇论文,作者称是世界上第一个基于深度学习的 ...
- bnuoj 34990(后缀数组 或 hash+二分)
后缀数组倍增算法超时,听说用3DC可以勉强过,不愿写了,直接用hash+二分求出log(n)的时间查询两个字符串之间的任意两个位置的最长前缀. 我自己在想hash的时候一直在考虑hash成数值时MOD ...
随机推荐
- 获取http://XX.XX.XX.XX :XXXX/QuestionResult.aspx?method=接口返回值
private string GetWeather(string strRegisterNo) { string getWeatherUrl = "http://XX.XX.XX.XX :X ...
- TChart-图表编辑器的测试
最近不知怎么的,想研究一下图表.先上效果图: 功能代码: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Class ...
- DOM节点的属性和方法
DOM DOM 是 JavaScript 操作网页的接口,全称为“文档对象模型”(Document Object Model).它的作用是将网页转为一个 JavaScript 对象,从而可以用脚本进行 ...
- latex技巧:弧AB
\usepackage{yhmath} $\wideparen{ABCDEFG}$
- RocketMQ的生产者和消费者
生产者: /** * 生产者 */ public class Provider { public static void main(String[] args) throws MQClientExce ...
- Spring学习笔记-装配Bean-02
什么是装配 创建应用对象之间写作关系的行为通常称为装配(wiring),这也是依赖注入(DI)的本质. Spring配置的可选方案 Spring提供了3中主要的装配机制: ● 在XML中进行显式配置. ...
- 搜索字母a或A
Amy觉得英语课实在是无聊至极,他不喜欢听老师讲课. 但是闲着也是闲着,不如做点什么吧?于是他开始数英语书里的字母a和A共出现了多少次. 费了九牛二虎之力终于数完了. 作为一名软件工程专业大学生,他觉 ...
- 159.SQL注入的实现和防御措施
sql注入: 所谓sql注入,就是通过把sql命令插入到表单中或页面请求的查询字符串中,最终达到欺骗服务器执行恶意的sql命令.具体来说,它是利用现有的应用程序,将(恶意的)sql命令注入到后台数据库 ...
- 324. 摆动排序 II(三路划分算法)
题目: 给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序. 示例 1: 输入: nums = [ ...
- linux常用命令和字符串乱码
top :动态实时显示cpu.内存.进程等使用情况(类似windows下的任务管理器) ps aux 查看所有进程 ps aux|grep java 查看java进程 kill -9 进程号 :强制杀 ...