• P2733 家的范围 Home on the Range


    又是一校内模拟赛见的题

    不知道为什么出题人怎么这么喜欢USACO的Farmer John的他的牛。。。

    感觉这道题不是特别的难,但也不很水

      同机房的神仙们都说这个题是一道二维前缀和的裸题,但我当时的确没想起来是怎么一回事。
    所以就用了另一种办法来做。

    有毒的思路:

    在强行枚举起点和边长后,怎么快速判断,原来就是两个点之间1的数量为它边长的平方就好了嘛~
    所以 这里,我们只需要预处理一个累加数组就能很快的计算出来 两点之间1的数量了。
    因为不会循环满,所以不会TLE。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<queue>
    #include<cmath>
    #include<cstring>
    
    using namespace std;
    const int N = 305;
    const int M = 500050;
    const int INF = 2147483647;
    
    int n,a[N][N];
    int cnt,ans[M];
    char g[N][N];
    
    inline int read(){
       int s = 0,w = 1;
       char ch = getchar();
       while(ch <= '0' || ch > '9') { if(ch=='-') w = -1; ch = getchar();}
       while(ch >= '0' && ch <= '9') s = s * 10 + ch - '0',ch = getchar();
       return s * w;
    }
    void work(){
    	for(int i = n - 1 ; i >= 0 ; i--)
    		for(int j = n - 1 ; j >= 0 ; j--) {
    			if(g[i][j] == '1') {
    				cnt = INF;
    				cnt = min(cnt,a[i + 1][j + 1]);
    				cnt = min(cnt,a[i + 1][j]);
    				cnt = min(cnt,a[i][j + 1]);
    				a[i][j] = cnt + 1;
    			}
    		}
    	for(int i = 0 ; i < n ; i++)
    		for(int j = 0 ; j < n ; j ++) {
    			//a[i][j] ++;
    			ans[a[i][j]]++;
    		}
    	for(int i = n ; i >= 2 ; i--)
    		ans[i - 1] += ans[i];
     	for(int i = 2 ; i <= n ; i++) {
    		if(ans[i]) {
    			printf("%d %d 
    ",i,ans[i]);
    		}
    	}
    }
    
    
    int main() {
    	//freopen("home.in","r",stdin);
    	//freopen("home.out","w",stdout);
    	n = read();
    	for(int i = 0 ; i < n ; i++) { 
    		scanf("%s",g[i]);
    		for(int j = 0 ; j < n ; j ++) {
    			//a[i][j] = g[i][j] == '1' ? 1 : 0;
    			a[i][j] = g[i][j];
    			if(a[i][j] == '1') a[i][j] = 1;
    			else a[i][j] = 0;
    		}
    	}
    	work();
    	return 0;
    }
    
    
  • 相关阅读:
    Notepadd ++ PluginManager安装
    Srping cloud Ribbon 自定义负载均衡
    Spring cloud Eureka 和 Zookeeper 比较
    Spring cloud info信息显示
    kafka 在Windows端安装 找不到或无法加载主类 的解决方案
    Linux kafka 单机安装
    mina
    @bzoj
    @51nod
    @topcoder
  • 原文地址:https://www.cnblogs.com/Repulser/p/9588666.html
Copyright © 2020-2023  润新知