分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

[JSOI2008]Blue Mary的战役地图

发布时间:2023-09-06 02:16责任编辑:胡小海关键词:暂无标签

暴力水过系列

数据范围这么小,就打暴力吧

枚举最大公共子矩阵的边长O(n)

枚举两个最大公共子矩阵的左上角O(n^4)

判断是否相同O(n^2)

总复杂度O(n^7),显然过不了

过不了怎么办,删冗余枚举啊

一堆优化:

1,倒序枚举边长,一旦满足,即为答案

2,判断是否相同,一旦不同,跳出去

然后就过了

#include<iostream>#include<cstdio>using namespace std;int a[2][60][60],n,ans;int main(){ ???scanf("%d",&n); ???for(int i=0;i<2;i++) ???????for(int j=1;j<=n;j++) ???????????for(int k=1;k<=n;k++) ???????????????scanf("%d",&a[i][j][k]); ???for(int l=n;l>=1;l--) ???????for(int x1=1;x1<=n-l+1;x1++) ???????????for(int y1=1;y1<=n-l+1;y1++) ???????????????for(int x2=1;x2<=n-l+1;x2++) ???????????????????for(int y2=1;y2<=n-l+1;y2++) ???????????????????{ ???????????????????????bool p=0; ???????????????????????for(int x=0;x<l;x++) ???????????????????????{ ???????????????????????????for(int y=0;y<l;y++) ???????????????????????????{ ???????????????????????????????if(a[0][x1+x][y1+y]!=a[1][x2+x][y2+y]) ???????????????????????????????????p=1; ???????????????????????????????if(p) ???????????????????????????????????break; ???????????????????????????} ???????????????????????????if(p) ???????????????????????????????break; ???????????????????????} ???????????????????????if(!p) ???????????????????????{ ???????????????????????????printf("%d\n",l); ???????????????????????????return 0; ???????????????????????} ???????????????????} ???return 0;}

[JSOI2008]Blue Mary的战役地图

原文地址:https://www.cnblogs.com/ivanovcraft/p/9737561.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved