HDU6046-hash
来源:互联网 发布:sql2000还原数据库 编辑:程序博客网 时间:2024/05/29 15:59
hash
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 502 Accepted Submission(s): 155
Problem Description
Qscqesze is busy at data cleaning.
One day,he generates a large matrix by Jenkins one-at-a-time hash:
inline unsigned sfr(unsigned h, unsigned x) {
return h >> x;
}
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;
}
Obviously,it's a 1e6*1e6 matrix.The data is at row i column j is f(i,j).Note that i and j are both numbered from 1.
Then he gets some matrices sized 1e3*1e3 from the matrix above.But he forgets their original postion.Can you help him to find them out?You just are asked to tell Qscqesze the left-top corner's postion.
One day,he generates a large matrix by Jenkins one-at-a-time hash:
inline unsigned sfr(unsigned h, unsigned x) {
return h >> x;
}
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;
}
Obviously,it's a 1e6*1e6 matrix.The data is at row i column j is f(i,j).Note that i and j are both numbered from 1.
Then he gets some matrices sized 1e3*1e3 from the matrix above.But he forgets their original postion.Can you help him to find them out?You just are asked to tell Qscqesze the left-top corner's postion.
Input
The first line is the number of test cases T (T<=3).
Here come with T cases.Each case is consist of 1000 0/1-strings sized 1000.
For convenience,the sample input is 10*10.And the real testcase is 1e3*1e3.
Here come with T cases.Each case is consist of 1000 0/1-strings sized 1000.
For convenience,the sample input is 10*10.And the real testcase is 1e3*1e3.
Output
For each test case, output a single line "Case #x :y z", where x is the case number, starting from 1. And y z is the answer.
Sample Input
10000011100000011001101111111000011110010011010101010010010010100111110111100101000111011101100110100
Sample Output
Case #1 :123456 234567
Source
2017 Multi-University Training Contest - Team 2
题意:给出一个1e3*1e3的小矩阵,让你在一个1e6*1e6的矩形内它,并输出左上端点
解题思路:先在1e3*1e3的小矩阵中处理出所有8*8的识别矩阵。然后遍历1e6*1e6的矩阵,遍历时不需要遍历所有点,只需要行之间隔1000,列之间隔1000即可(因为这样里面至少覆盖了一个识别矩阵),然后处理出这个以这个点位左上端点的8*8的小矩阵,然后判断在1e3*1e3的矩阵中能否找到这个矩阵即可
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <map>#include <set>#include <stack>#include <queue>#include <vector>#include <bitset>#include <unordered_map>#include <functional>using namespace std;#define LL long longconst int INF = 0x3f3f3f3f;unordered_map<LL,pair<int,int>>mp;char ch[1009][1009];inline unsigned sfr(unsigned h, unsigned x){ return h>>x;}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;}int main(){ int t,cas=0; scanf("%d",&t); while(t--) { for(int i=1;i<=1000;i++)scanf("%s",ch[i]+1); mp.clear(); for(int i=1;i<=993;i++) { for(int j=1;j<=993;j++) { LL temp=0; for(int k=0;k<8;k++) for(int p=0;p<8;p++) { temp<<=1; if(ch[i+k][j+p]=='1') temp|=1; } mp[temp]=make_pair(i,j); } } int flag=0; for(int i=1;i<=1e6;i+=992) { for(int j=1;j<=1e6;j+=992) { LL temp=0; for(int k=0;k<8;k++) for(int p=0;p<8;p++) { temp<<=1; if(f(i+k,j+p)) temp|=1; } if(mp.find(temp)!=mp.end()) { pair<int,int> ans=mp[temp]; printf("Case #%d :%d %d\n",++cas,i-ans.first+1,j-ans.second+1); flag=1;break; } } if(flag) break; } } return 0;}
阅读全文
0 0
- HDU6046-hash
- HDU6046 hash 【2017多校联训第二场B】
- Hdu6046 hash(2017多校第2场)
- hash
- Hash
- hash
- hash
- Hash
- hash
- Hash
- HASH
- hash
- hash
- HASH
- hash
- hash
- Hash
- hash
- hive的脚本执行
- kendo ui PanelBar menu jquery 操作
- kubernetes集群 yum安装方式
- php通过淘宝API查询IP地址归属等信息
- notepad++插件配置
- HDU6046-hash
- Please enter a commit message to explain why this merge is necessary
- dockertoolbox启动redis镜像
- LeetCode 217. Contains Duplicate
- mysql 修改某字段部分内容
- spring Batch在SSH框架的应用
- 基于ICE方式SIP信令穿透Symmetric NAT技术研究
- 点双联通分量模板
- Apache基本配置-3