• 1221. Malevich Strikes Back! 夜


    递推水题

    import java.util.*;
    import java.math.*;
    
    public class Main {
    
    	public static void main(String[] args) {
    		int n;
    		Scanner in = new Scanner(System.in);
    		while (in.hasNext()) {
    			n = in.nextInt();
    			if (n == 0) {
    				break;
    			}
    			int num0[][] = new int[n + 1][n + 1];//图形从上向下 此列连续的 0 的个数
    			int num1[][] = new int[n + 1][n + 1];//图形从上到下 此列所有的 1 的个数
    			int a[][] = new int[n + 1][n + 1];
    			for (int i = 1; i <= n; ++i) {
    				for (int j = 1; j <= n; ++j) {
    					a[i][j] = in.nextInt();
    				}
    			}
    			for (int j = 1; j <= n; ++j) {
    				num0[0][j] = num1[0][j] = 0;
    			}
    			for (int i = 1; i <= n; ++i) {
    				for (int j = 1; j <= n; ++j) {
    					if (a[i][j] == 0) {
    						num1[i][j] = num1[i - 1][j];
    						num0[i][j] = num0[i - 1][j] + 1;
    					} else {
    						num1[i][j] = num1[i - 1][j] + 1;
    						num0[i][j] = 0;
    					}
    
    				}
    			}
    			int ans = -1;
    			for (int i = 1; i <= n; ++i) {
    				for (int j = 1; j <= n; ++j) {
    					int temp = num0[i][j];
    					if (temp > 1 && temp % 2 == 1) {
    						if (j + temp / 2 > n || j - temp / 2 < 1) {
    							continue;
    						}
    						// System.out.println(i+" "+j+" "+temp);
    						boolean yes = true;
    						int pre = temp;
    						for (int k = 1; k <= temp / 2; ++k) {
    							// System.out.println(pre);
    							if (!(num0[i - k][j + k] + 2 == pre && num1[i][j
    									+ k]
    									- num1[i - temp][j + k] == temp
    									- num0[i - k][j + k])) {
    								yes = false;
    								// System.out.println(k);
    								// System.out.println((num0[i-k][j+k])+" "+pre);
    							}
    							if (!(num0[i - k][j - k] + 2 == pre && num1[i][j
    									- k]
    									- num1[i - temp][j - k] == temp
    									- num0[i - k][j - k])) {
    								yes = false;
    							}
    							pre = pre - 2;
    						}
    						if (yes == true && temp > ans) {
    							ans = temp;
    						}
    
    					}
    				}
    			}
    			if (ans == -1) {
    				System.out.println("No solution");
    			} else {
    				System.out.println(ans);
    			}
    
    		}
    	}
    
    }
    
  • 相关阅读:
    dubbo zookeeper报错failed to connect to server , error message is:No route to host
    linux的ssh命令
    linux的/etc/hosts的作用
    linux如何查看某个pid的进程?
    Nginx配置详解
    nginx基本配置与参数说明以及Nginx中的upstream轮询机制介绍
    Nginx配置upstream实现负载均衡
    nginx简单的nginx.conf配置
    API Gateway性能比较:NGINX vs. ZUUL vs.Cloud Gateway vs. Linkerd[译]
    RabbitMQ 入门【精+转】
  • 原文地址:https://www.cnblogs.com/liulangye/p/2705057.html
Copyright © 2020-2023  润新知