题意:给你一个零一矩阵,q次询问,每次给你两个长宽相同的子矩阵,问你它们是恰好有一位不同,还是完全相同,还是有多于一位不同。

对每行分别哈希,先一行一行地尝试匹配,如果恰好发现有一行无法对应,再对那一行内部进行暴力找出那一行内部有几位不同即可。

#include<cstdio>
using namespace std;
typedef unsigned long long ull;
int n,m,q;
char a[1005][1005];
ull b[1005][1005],pw[1005];
int sum[1005][1005];
//int Abs(int x){
// return x<0 ? (-x) : x;
//}
int calc(int x1,int y1,int x2,int y2){
return sum[x2][y2]-sum[x2][y1-1]-sum[x1-1][y2]+sum[x1-1][y1-1];
}
int main(){
//freopen("d.in","r",stdin);
pw[0]=1;
for(int i=1;i<=1001;++i){
pw[i]=pw[i-1]*(ull)233;
}
int l[5],r[5];
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i){
scanf("%s",a[i]+1);
}
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
sum[i][j]=sum[i-1][j]+a[i][j]-'0';
}
}
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
sum[i][j]+=sum[i][j-1];
}
}
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
b[i][j]=b[i][j-1]*(ull)233+(ull)(a[i][j]-'0');
}
}
scanf("%d",&q);
for(;q;--q){
for(int j=1;j<=4;++j){
scanf("%d%d",&l[j],&r[j]);
++l[j];
++r[j];
}
// int t1=calc(l[1],r[1],l[2],r[2]);
// int t2=calc(l[3],r[3],l[4],r[4]);
// if(Abs(t1-t2)>1){
// puts("Wrong");
// continue;
// }
int kuan=r[2]-r[1]+1,cnt=0,I,J;
for(int i=l[1],j=l[3];i<=l[2];++i,++j){
ull hs11=b[i][r[2]]-(b[i][r[1]-1]*pw[kuan]);
ull hs21=b[j][r[4]]-(b[j][r[3]-1]*pw[kuan]);
if(!(hs11==hs21)){
++cnt;
I=i;
J=j;
if(cnt>1){
break;
}
}
}
if(cnt>1){
puts("Wrong");
continue;
}
else if(cnt==0){
puts("Perfect");
continue;
}
cnt=0;
for(int k1=r[1],k2=r[3];k1<=r[2];++k1,++k2){
if(a[I][k1]!=a[J][k2]){
++cnt;
if(cnt>1){
break;
}
}
}
if(cnt>1){
puts("Wrong");
}
else{
puts("One difference");
}
}
return 0;
}

【字符串哈希】The 16th UESTC Programming Contest Preliminary F - Zero One Problem的更多相关文章

  1. 【set】【可持久化Trie】The 16th UESTC Programming Contest Preliminary K - Will the circle be broken

    题意:You are given an array A of N non-negative integers and an integer M. Find the number of pair(i,j ...

  2. 【推导】The 16th UESTC Programming Contest Preliminary L - Foxtrot

    题意:有n瓶药剂,其中只有一瓶药剂有毒.让你用最少的小白鼠试出哪瓶有毒.你只有一次给任意只小白鼠各喂食任意种类药剂的机会. m只老鼠就能对应2^m种“生死状态”的组合,给每种状态分配一个种类的药剂,然 ...

  3. The 15th UESTC Programming Contest Preliminary J - Jermutat1on cdoj1567

    地址:http://acm.uestc.edu.cn/#/problem/show/1567 题目: Jermutat1on Time Limit: 3000/1000MS (Java/Others) ...

  4. The 15th UESTC Programming Contest Preliminary C - C0ins cdoj1554

    地址:http://acm.uestc.edu.cn/#/problem/show/1554 题目: C0ins Time Limit: 3000/1000MS (Java/Others)     M ...

  5. The 15th UESTC Programming Contest Preliminary B - B0n0 Path cdoj1559

    地址:http://acm.uestc.edu.cn/#/problem/show/1559 题目: B0n0 Path Time Limit: 1500/500MS (Java/Others)    ...

  6. The 15th UESTC Programming Contest Preliminary K - Kidd1ng Me? cdoj1565

    地址:http://acm.uestc.edu.cn/#/problem/show/1565 题目: Kidd1ng Me? Time Limit: 3000/1000MS (Java/Others) ...

  7. The 15th UESTC Programming Contest Preliminary M - Minimum C0st cdoj1557

    地址:http://acm.uestc.edu.cn/#/problem/show/1557 题目: Minimum C0st Time Limit: 3000/1000MS (Java/Others ...

  8. The 16th UESTC Programming Contest Final 游记

    心情不好来写博客. 为了满足ykk想要气球的愿望,NicoDafaGood.Achen和我成功去神大耍了一圈. 因为队名一开始是LargeDumpling应援会,然后队名被和谐,变成了学校的名字,顿时 ...

  9. The 15th UESTC Programming Contest Preliminary G - GC?(X,Y) cdoj1564

    地址:http://acm.uestc.edu.cn/#/problem/show/1564 题目: G - GC?(X,Y) Time Limit: 3000/1000MS (Java/Others ...

随机推荐

  1. vi 编辑器使用技巧

    1.由命令"vi --version"所显示的内容知vi的全局配置文件 2.显示行号   ,非编辑模式输入 : set nu 3.显示颜色 1)在文件中找到 "synta ...

  2. oggMonitor是什么

    goldengate monitor是一套监控goldengate的软件,如果安装的ogg比较多,使用goldengate monitor可以清楚的看见全部OGG的每个进程运行状态,以及整个OGG的架 ...

  3. linux查看内存、CPU占用资源最多的进程

    [内存占用] #利用ps命令,默认使用ps参数会显示的结果 ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 ...

  4. python基础--re模块

    常用正则表达式符号 '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r& ...

  5. python进阶学习之匿名函数lambda

    定义: lambda 参数列表:return(表达式) 匿名函数的表达式,只允许有一个. 匿名函数一般用于较简单的情况. 实例1: 实例2,配合高阶函数filter()使用: filter()函数是  ...

  6. 洛谷P1186玛丽卡

    传送门啦 先跑一遍最短路,将最短路的路径记录下来,然后枚举每一条最短路的边,将其断掉,记录此时的1-n的时间,取其中最大的一个时间即为所求. (通过 $ cut[][] $ 和 $ f[] $ 进行操 ...

  7. wpf tooltip 样式自定义

    <Style BasedOn="{StaticResource {x:Type ToolTip}}" TargetType="ToolTip"> & ...

  8. 关于文件格式Fuzzing测试与漏洞挖掘的学习

    最近对于文件的漏洞挖掘比较感兴趣,所以在找资料来看.顺带记录笔记,把这些笔记贴在博客中分享一下.最近打算把精力放在mp3格式的漏洞发掘上,一来这是常见的文件格式格式也比较清晰.二来这也是学长推荐的入手 ...

  9. Newtonsoft.Json 序列化器的重写

    public class TestConverter : JsonConverter { public override void WriteJson(JsonWriter writer, objec ...

  10. CF 586B 起点到终点的最短路和次短路之和

    起点是右下角  终点是左上角 每次数据都是两行的点  输入n 表示有n列 接下来来的2行是 列与列之间的距离 最后一行是  行之间的距离 枚举就行   Sample test(s) input 41 ...