zoukankan      html  css  js  c++  java
  • 题解 CF22B 【Bargaining Table】

    NOIO2 要来了,考前要练练暴力,要不挂了怎么办呢


    因为(1le n,m le 25) 的数据范围,我们可以写一个暴力。枚举矩形的左上端点和右下端点,然后判断边框是否有1,如果合法就取(max),否则就break

    Tips:

    1. 注意是判断边框即可。
    2. 在判断边框的时,可以用 4 个 while 猛冲,如果中途结束,那么说明边框不合法。
    3. 枚举左上端点((x1,y1))和右下端点((x2,y2))时注意(x2ge x1,y2ge y1)
    #include<bits/stdc++.h>
    using namespace std;
    char ch[30][30];
    int ans;
    int main() {
    	int n,m;
    	cin>>n>>m;
    	for(int i=1;i<=n;i++) {
    		for(int j=1;j<=m;j++) {
    			cin>>ch[i][j];
    		}
    	}
    	for(int i=1;i<=n;i++) {
    		for(int j=1;j<=m;j++) {
    			for(int k=i;k<=n;k++) {
    				for(int l=j;l<=m;l++) {
    					int I=i,J=j;
    					while(J<l&&ch[I][J]=='0') J++;
    					if(J!=l) break;
    					while(I<k&&ch[I][J]=='0') I++;
    					if(I!=k) break;
    					while(J>j&&ch[I][J]=='0') J--;
    					if(J!=j) break;
    					while(I>i&&ch[I][J]=='0') I--;
    					if(I!=i) break;
    					ans=max(ans,2*(k-i+1+l-j+1));
    				}
    			}
    		}
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
  • 相关阅读:
    第19章 辅助器方法
    第18 章 视图
    第16章 过滤器
    第15章 控制器和动作
    第14章 高级路由特性
    第13章 URL 路由
    第12章 MVC项目综述
    第8章 SportsStorePeta 导航
    第9章 SportsStorePeta 完成购物车
    第10章 SportsStorePeta 管理
  • 原文地址:https://www.cnblogs.com/ahawzlc/p/12837469.html
Copyright © 2011-2022 走看看