HDU6046 hash 【2017多校联训第二场B】
来源:互联网 发布:如何利用网络做直销 编辑:程序博客网 时间:2024/06/10 15:51
传送门
题目大意:给出一个
题解:对于小矩阵的每一个位置求出这个位置以及之后
看不懂就看看代码吧,表达能力捉鸡……
#include <bits/stdc++.h>const int MAXN = 1e3 + 5, MXM = 1e6;const int L = 1e3, ZIP = 64;#define LL unsigned long longusing namespace std;inline unsigned sfr(unsigned h, unsigned x) { return h >> x;}inline unsigned Ran() { return rand() << 15 | rand();}int f(LL i, LL j) { LL w = i * 1000000ll + j; int h = 0; for(int k = 0; k < 5; ++k) { h += (int) ((w >> (8 * k)) & 255); h += (h << 10); h ^= sfr(h, 6); } h += h << 3; h ^= sfr(h, 11); h += h << 15; return sfr(h, 27) & 1;}const int MOD = 1313131;struct HashMap { int adj[MOD], cc, nxt[MAXN * MAXN]; LL val[MAXN * MAXN], pos[MAXN * MAXN]; void clr() { memset(adj, 0, sizeof adj); cc = 0; } inline void Ins(LL v, LL p) { int t = v % MOD; ++ cc; val[cc] = v; pos[cc] = p; nxt[cc] = adj[t]; adj[t] = cc; } inline LL Find(LL v) { int u = v % MOD; for(int i = adj[u]; i; i = nxt[i]) if(val[i] == v) return pos[i]; return 0; }} mp;char s[MAXN];LL hsh[MAXN];int main () { int T; scanf("%d", &T); for(int Cas = 1; Cas <= T; ++ Cas) { for(int i = 1; i<=L; i++) { scanf("%s", s+1); for(int j = 1; j <= L; j++) { hsh[j] = (hsh[j-1]<<1)+(s[j]=='1'); } for(int j = 1; j<=(L-ZIP+1); j++) mp.Ins(hsh[j+ZIP-1], 1000001LL*i+j); } LL ans = 0; int px, py; for(int i = 1; (!ans) && i <= MXM; i += 1000) for(int j = 1; (!ans) && j <= MXM; j += 900) { if(j+ZIP-1 > MXM) continue ; LL hsh = 0; for(int t = 0; t<ZIP; t++) hsh = (hsh<<1) + f(i, j+t); if((ans=mp.Find(hsh)) != 0) { px = i, py = j; break; } } int x = ans / 1000001ull, y = ans % 1000001ull; printf("Case #%d :%d %d\n", Cas, px-x+1, py-y+1); if(Cas != T) mp.clr(); }}
阅读全文
0 0
- HDU6046 hash 【2017多校联训第二场B】
- Hdu6046 hash(2017多校第2场)
- HDU6046-hash
- 2017计蒜客比赛第二场A题B题
- SCNU省选校赛第二场B题题解
- SCNU省选校赛第二场B题题解
- 暑期个人赛--第二场--B
- 2017计蒜客第二场
- 微软2017年预科生计划在线编程笔试第二场B题Diligent Robots
- 2017 计蒜之道 初赛 第二场 B.百度的科学计算器(简单)
- 2017 计蒜之道 初赛 第二场 B. 百度的科学计算器(简单)
- 【百度之星】初赛第二场:B网页聚类
- 2013暑假集训B组训练赛第二场
- 20130820 【南华大学 ACM】 个人选拔赛第二场 【B . SUME】
- 2014校招 Google在线测试第二场题解 B
- codeforce 259B 第二场 最新题解 (找规律)
- [找规律] 多校联合第二场 B题 Buildings
- Wannafly 挑战赛第二场 B Travel【最短路 建图】
- 7.27--SSH学习之SpringMVC,Ajax请求、拦截器、文件上传和MyBatis访问数据库基本操作
- hdu--6045 Is Derek Lying
- 快速删除电脑上的大文件
- 南阳acm士兵杀敌系列
- 问题:C-Kermit>c Sorry, you must SET LINE or SET HOST first
- HDU6046 hash 【2017多校联训第二场B】
- Linux修改主机名永久生效
- LeetCode(25)--Reverse Nodes in k-Group
- Linux和Windonws下静态库与动态库(静态库篇)
- 求两个单链表list1与list2的差集,并将结果保存至list1中
- 服务器centos 7.2 LAMP环境安装
- js中常用方法总结
- Android—(提交数据至服务器)
- Spring Cloud Eureka详解