国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

[BZOJ1567][JSOI2008]Blue Mary的戰(zhàn)役地圖(二分+hash)

2019-11-08 01:33:38
字體:
供稿:網(wǎng)友

題目描述

傳送門

題解

二分答案之后O(n2)矩陣hash 就是個(gè)裸題

代碼

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<map>using namespace std;#define UL unsigned long long#define N 55const UL s=23333333333LL;const UL S=3115439631056497LL;int n,ans,a[N][N],b[N][N];UL mis[N],miS[N],c[N][N],d[N][N];map <UL,bool> hash;bool check(int mid){ for (int i=1;i<=n;++i) { c[i][1]=(UL)a[i][1]; for (int j=2;j<=mid;++j) c[i][1]=c[i][1]*s+(UL)a[i][j]; for (int j=2;j<=n-mid+1;++j) c[i][j]=(c[i][j-1]-(UL)a[i][j-1]*mis[mid-1])*s+(UL)a[i][j+mid-1]; } for (int i=1;i<=n-mid+1;++i) { d[1][i]=c[1][i]; for (int j=2;j<=mid;++j) d[1][i]=d[1][i]*S+c[j][i]; for (int j=2;j<=n-mid+1;++j) d[j][i]=(d[j-1][i]-c[j-1][i]*miS[mid-1])*S+c[j+mid-1][i]; } hash.clear(); for (int i=1;i<=n-mid+1;++i) for (int j=1;j<=n-mid+1;++j) hash[d[i][j]]=1; for (int i=1;i<=n;++i) { c[i][1]=(UL)b[i][1]; for (int j=2;j<=mid;++j) c[i][1]=c[i][1]*s+(UL)b[i][j]; for (int j=2;j<=n-mid+1;++j) c[i][j]=(c[i][j-1]-(UL)b[i][j-1]*mis[mid-1])*s+(UL)b[i][j+mid-1]; } for (int i=1;i<=n-mid+1;++i) { d[1][i]=c[1][i]; for (int j=2;j<=mid;++j) d[1][i]=d[1][i]*S+c[j][i]; for (int j=2;j<=n-mid+1;++j) d[j][i]=(d[j-1][i]-c[j-1][i]*miS[mid-1])*S+c[j+mid-1][i]; } for (int i=1;i<=n-mid+1;++i) for (int j=1;j<=n-mid+1;++j) if (hash[d[i][j]]) return 1; return 0;}int find(){ int l=1,r=n,mid,ans=0; while (l<=r) { mid=(l+r)>>1; if (check(mid)) ans=mid,l=mid+1; else r=mid-1; } return ans;}int main(){ scanf("%d",&n); mis[0]=1LL;for (int i=1;i<=n;++i) mis[i]=mis[i-1]*s; miS[0]=1LL;for (int i=1;i<=n;++i) miS[i]=miS[i-1]*S; for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) scanf("%d",&a[i][j]); for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) scanf("%d",&b[i][j]); ans=find();
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 富锦市| 布拖县| 莫力| 锡林郭勒盟| 额济纳旗| 濉溪县| 栾川县| 高尔夫| 旌德县| 东至县| 马龙县| 津市市| 大姚县| 八宿县| 广安市| 惠来县| 无锡市| 兴海县| 关岭| 栾城县| 建水县| 孟州市| 阿克苏市| 永新县| 韶关市| 景泰县| 思茅市| 桃园市| 新巴尔虎右旗| 福海县| 阿尔山市| 无锡市| 资源县| 陆河县| 金乡县| 历史| 闻喜县| 哈尔滨市| 岚皋县| 油尖旺区| 建昌县|