P2733 家的范围 Home on the Range
时间:2022-05-10
本文章向大家介绍P2733 家的范围 Home on the Range,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目背景
农民约翰在一片边长是N (2 <= N <= 250)英里的正方形牧场上放牧他的奶牛。(因为一些原因,他的奶牛只在正方形的牧场上吃草。)遗憾的是,他的奶牛已经毁坏一些土地。( 一些1平方英里的正方形)
题目描述
农民约翰需要统计那些可以放牧奶牛的正方形牧场(至少是2x2的,在这些较大的正方形中没有一个点是被破坏的,也就是说,所有的点都是“1”)。
你的工作要在被供应的数据组里面统计所有不同的正方形放牧区域(>=2x2)的个数。当然,放牧区域可能是重叠。
输入输出格式
输入格式:
第 1 行:N,牧区的边长。
第 2 到 n+1 行:N个没有空格分开的字符。0 表示 "那一个区段被毁坏了";1 表示 " 准备好被吃"。
输出格式:
输出那些存在的正方形的边长和个数,一种一行。
输入输出样例
输入样例#1:
6
101111
001111
111111
001111
101101
111001
输出样例#1:
2 10
3 4
4 1
说明
题目翻译来自NOCOW。
USACO Training Section 3.3
我们用dp[i][j][k]表示,从(i,j)点向往延伸k个单位长度能否构成边长为k的正方形
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 #include<queue>
6 #include<algorithm>
7 #include<cstdlib>
8 using namespace std;
9 const int MAXN=301;
10 void read(int &n)
11 {
12 char c='+';int x=0,flag=1;
13 while(c<'0'||c>'9')
14 {c=getchar();if(c=='-')flag=-1;}
15 while(c>='0'&&c<='9')
16 {x=x*10+c-48;c=getchar();}
17 n=(x*flag);
18 }
19 int n;
20 int a[MAXN][MAXN];
21 int dp[MAXN][MAXN][MAXN];
22 int happen[MAXN];
23 int main()
24 {
25 read(n);
26 for(int i=1;i<=n;i++)
27 {
28 string s;
29 cin>>s;
30 for(int j=0;j<n;j++)
31 {
32 a[i][j+1]=s[j]-'0';
33 if(a[i][j+1])
34 dp[i][j+1][1]=1;
35 }
36 }
37 for(int k=1;k<=n;k++)
38 for(int i=1;i<=n;i++)
39 for(int j=1;j<=n;j++)
40 if(dp[i+1][j][k]&&dp[i][j+1][k]&&dp[i+1][j+1][k])
41 dp[i][j][k+1]=1;
42 for(int i=1;i<=n;i++)
43 for(int j=1;j<=n;j++)
44 for(int k=1;k<=n;k++)
45 if(dp[i][j][k])
46 happen[k]++;
47 else break;
48 int num=1;
49 while(num++&&happen[num])
50 printf("%d %dn",num,happen[num]);
51 return 0;
52 }
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Nginx性能监控与调优
- pytest封神之路第二步 132个命令行参数用法
- Jumpserver2.2部署文档
- Golang多线程简单斗地主
- Tomcat性能监控与调优
- Vue+SpringBoot项目实战(一) 搭建环境
- kubernetes(十九) Ceph存储入门
- Java并发编程(8)- 应用限流及其常见算法
- 字符集其实很简单
- kubernetes(二十)SpringCloud微服务容器化迁移
- HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!
- kubernetes(七) 二进制部署k8s(1.18.4版本)
- Java并发编程(7)- 线程调度 - 线程池
- Java并发编程(6)- J.U.C组件拓展
- Java并发编程(5)- J.U.C之AQS及其相关组件详解