第一次遇到二维卷积 不太清楚是怎么做的。

40分暴力比对即可。

对于行为或者列为1时 容易想到NTT做快速匹配.然后找答案即可。

考虑这是一个二维的比对过程。

设\(f_{i,j}\)表示以i,j为右下角的答案。

那么我们把询问矩阵给上下翻转 左右翻转。设初始矩阵为a 询问矩阵为b 且询问矩阵大小为x,y.

那么显然有 \(f_{i,j}=\sum_{l=1}^x\sum_{r=1}^y[b_{l,r}==a_{i-l+1,j-r+1}]\)

这是一个二维卷积的形式 还是考虑转换成一维卷积的形式。

一种构造方法 将询问矩阵扩展成原来矩阵大小的矩阵 那么空位补0.

然后把矩阵按照 i*m+j的编号放下来 做卷积即是\(f_{i,j}\)的答案。

容易发现是正确。

const int MAXN=510,N=600000,G=3;
int g[N],f[N],rev[N],g1[N],f1[N],w[N];
char a[MAXN][MAXN];
int n,m,lim=1,Q;
inline int ksm(int b,int p)
{
int cnt=1;
while(p)
{
if(p&1)cnt=(ll)cnt*b%mod;
b=(ll)b*b%mod;p=p>>1;
}
return cnt;
}
inline void NTT(int *a,int op)
{
rep(1,lim-1,i)if(i<rev[i])swap(a[i],a[rev[i]]);
for(int len=2;len<=lim;len=len<<1)
{
int mid=len>>1;
int wn=ksm(G,op==1?(mod-1)/len:mod-1-(mod-1)/len);
for(int j=0;j<lim;j+=len)
{
int d=1;
for(int i=0;i<mid;++i)
{
int x=a[i+j],y=(ll)a[i+j+mid]*d%mod;
a[i+j]=(x+y)%mod;a[i+j+mid]=(x-y+mod)%mod;
d=(ll)d*wn%mod;
}
}
}
if(op==-1)
{
int INV=ksm(lim,mod-2);
rep(0,lim-1,i)a[i]=(ll)a[i]*INV%mod;
}
}
inline void prepare(int *g,int *f)
{
rep(1,n,i)rep(0,m-1,j)
g[(i-1)*m+j]=(a[i][j]=='G'),f[(i-1)*m+j]=(a[i][j]=='L');
NTT(g,1);NTT(f,1);
}
inline void calc()
{
rep(0,lim-1,i)w[i]=((ll)g[i]*g1[i]+(ll)f[i]*f1[i])%mod;
NTT(w,-1);
}
int main()
{
freopen("best.in","r",stdin);
freopen("best.out","w",stdout);
gt(n);gt(m);
rep(1,n,i)gc(a[i]);
int ww=n*(m-1);
while(lim<ww+ww)lim=lim<<1;
rep(0,lim-1,i)rev[i]=rev[i>>1]>>1|((i&1)?lim>>1:0);
prepare(g,f);gt(Q);
rep(1,Q,cc)
{
int x,y;
gt(x);gt(y);
memset(a,0,sizeof(a));
memset(f1,0,sizeof(f1));
memset(g1,0,sizeof(g1));
rep(1,x,j)gc(a[j]),reverse(a[j],a[j]+y);
//rep(1,x,j)printf("%s\n",a[j]);
rep(1,x/2,j)rep(0,y-1,k)swap(a[j][k],a[x-j+1][k]);
//rep(1,x,j)printf("%s\n",a[j]);
prepare(g1,f1);
calc();
//rep(0,ww,j)put(w[j]);
int ans=0,ansl=1,ansr=1;
rep(x,n,i)
{
rep(y-1,m-1,j)
{
if(ans<w[(i-1)*m+j])
{
ans=w[(i-1)*m+j];
ansl=i-x+1;ansr=j+1-y+1;
}
}
}
printf("%d %d\n",ansl,ansr);
}
return 0;
}

4.28 省选模拟赛模拟赛 最佳农场 二维卷积 NTT的更多相关文章

  1. 2019ICPC 上海网络赛 L. Digit sum(二维树状数组+区间求和)

    https://nanti.jisuanke.com/t/41422 题目大意: 给出n和b,求1到n,各数在b进制下各位数之和的总和. 直接暴力模拟,TLE.. 没想到是要打表...还是太菜了. # ...

  2. [CSP-S模拟测试]:回文(hash+二维前缀和)

    题目描述 闲着无聊的$YGH$秒掉上面两道题之后,开始思考有趣的回文串问题了. 他面前就有一个漂浮着的字符串.显然$YGH$是会$manacher$的,于是他随手求出了这个字符串的回文子串个数.但是他 ...

  3. 2019.03.28 bzoj3594: [Scoi2014]方伯伯的玉米田(二维bit优化dp)

    传送门 题意咕咕咕 思路:直接上二维bitbitbit优化dpdpdp即可. 代码: #include<bits/stdc++.h> #define N 10005 #define K 5 ...

  4. 【NOIP模拟赛】Drink 二维链表+模拟

    我觉得这道题的主旨应该是模拟,但是如果说他是二维链表的話也不為過.這道題的主體思路就是把原來旋轉點的O(n^2)變成了旋轉邊界的O(n).怎麼旋轉邊界呢,就好像是把原來的那些點都於上下左右四個點連線, ...

  5. PAT团体程序设计天梯赛 - 模拟赛

    由于本人愚笨,最后一题实在无力AC,于是只有前14题的题解Orz 总的来说,这次模拟赛的题目不算难,前14题基本上一眼就有思路,但是某些题写起来确实不太容易,编码复杂度有点高~ L1-1 N个数求和 ...

  6. 2018SCin tsyzDay1 模拟赛-模拟

    预计得分:70+0+0+100+100+100+100=470 实际得分:70+0+0+30+100+0+40=240 第一天就被模拟虐爆qwq T1 https://www.luogu.org/pr ...

  7. 清北学堂 NOIP2017模拟赛 越赛越心塞

    连续考了一个星期发现自己真的是手感型选手,成绩全靠天意.手感好了码出200+也没什么问题,推出式子并且打出自己都不信的操作也有过.手感差了......就一个呵呵二字. 然后开始是T总让我们休息了一个星 ...

  8. ACdream区域赛指导赛之专题赛系列(1)の数学专场

    Contest : ACdream区域赛指导赛之专题赛系列(1)の数学专场 A:EOF女神的相反数 题意:n(<=10^18)的数转化成2进制.翻转后(去掉前导零)输出十进制 思路:water ...

  9. 36th成都区域赛网络赛 hdoj4039 The Social Network(建图+字符串处理)

    这题是某年成都区域赛网络赛的一题. 这题思路非常easy,可是从时间上考虑,不妨不要用矩阵存储,我用的链式前向星. 採用线上查询.利用map对字符串编号,由于非常方便.要推荐的朋友,事实上就是朋友的朋 ...

随机推荐

  1. mysql逗号分隔问题

    1.说明: 之前写了一个发先了有点问题, 用正则去匹配的会匹配多了数据,所以优化下 媒资表(asset_baseinfo)里面有地区,如下,如果一个节目包含多个地区,id存在如下 地区表(produc ...

  2. mybitis下choose..when. otherwise条件不起作用

    我的代码如下: <select id="findList" resultType="TyArticle"> SELECT <include r ...

  3. element-ui 表单校验 Rules 配置 常用黑科技

    type 指示type要使用的验证器.可识别的类型值为: string:类型必须为string.type 默认是 string // 校验 string: [ {type: 'string', mes ...

  4. java 面向对象(十):关键字:this

    1.可以调用的结构:属性.方法:构造器2.this调用属性.方法:this理解为:当前对象 或 当前正在创建的对象 2.1 在类的方法中,我们可以使用"this.属性"或" ...

  5. 数据可视化基础专题(十):Matplotlib 基础(二) 自定义配置文件和绘图风格(rcParams和style)

    https://matplotlib.org/api/rcsetup_api.html#module-matplotlib.rcsetup 一.什么是rcParams?我们在使用matplotlibl ...

  6. 数据可视化之powerBI基础(四)深入了解PowerBI的工具提示功能

    https://zhuanlan.zhihu.com/p/36804592 在PowerBI上个月的更新中,增加了工具提示功能,这项功能允许您将自己的可视化作品放置到工具提示中,通过鼠标悬停的方式来展 ...

  7. 数据可视化实例(十四):面积图 (matplotlib,pandas)

    偏差 (Deviation) 面积图 (Area Chart) 通过对轴和线之间的区域进行着色,面积图不仅强调峰和谷,而且还强调高点和低点的持续时间. 高点持续时间越长,线下面积越大. https:/ ...

  8. L-BFGS算法详解(逻辑回归的默认优化算法)

    python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...

  9. bzoj1680[Usaco2005 Mar]Yogurt factory*&&bzoj1740[Usaco2005 mar]Yogurt factory 奶酪工厂*

    bzoj1680[Usaco2005 Mar]Yogurt factory bzoj1740[Usaco2005 mar]Yogurt factory 奶酪工厂 题意: n个月,每月有一个酸奶需求量( ...

  10. js dom演示

    <body> <div id="div1"> <p name="p1">p1内容</p> <p name= ...