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 \n",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;
}
P2733 家的范围 Home on the Range的更多相关文章
- 洛谷P2733 家的范围 Home on the Range
P2733 家的范围 Home on the Range• o 26通过o 61提交• 题目提供者该用户不存在• 标签USACO• 难度普及+/提高 提交 讨论 题解 最新讨论• 暂时没有讨论题目背景 ...
- 洛谷——P2733 家的范围 Home on the Range
P2733 家的范围 Home on the Range 题目背景 农民约翰在一片边长是N (2 <= N <= 250)英里的正方形牧场上放牧他的奶牛.(因为一些原因,他的奶牛只在正方形 ...
- 洛谷 P2733 家的范围 Home on the Range Label:二维数组前缀和
题目背景 农民约翰在一片边长是N (2 <= N <= 250)英里的正方形牧场上放牧他的奶牛.(因为一些原因,他的奶牛只在正方形的牧场上吃草.)遗憾的是,他的奶牛已经毁坏一些土地.( 一 ...
- 洛谷 P2733 家的范围 Home on the Range
题目背景 农民约翰在一片边长是N (2 <= N <= 250)英里的正方形牧场上放牧他的奶牛.(因为一些原因,他的奶牛只在正方形的牧场上吃草.)遗憾的是,他的奶牛已经毁坏一些土地.( 一 ...
- 洛谷—— P2733 家的范围 Home on the Range
https://www.luogu.org/problem/show?pid=2733 题目背景 农民约翰在一片边长是N (2 <= N <= 250)英里的正方形牧场上放牧他的奶牛.(因 ...
- P2733 家的范围 Home on the Range-弱DP
P2733 家的范围 Home on the Range 思路 :转化为以每个点为右下角的 最大正方形的边长 #include<bits/stdc++.h> using namespace ...
- 家的范围 Home on the Range(洛谷 2733)
题目背景 农民约翰在一片边长是N (2 <= N <= 250)英里的正方形牧场上放牧他的奶牛.(因为一些原因,他的奶牛只在正方形的牧场上吃草.)遗憾的是,他的奶牛已经毁坏一些土地.( 一 ...
- ELK之开心小爬爬
1.开心小爬爬 在爬取之前需要先安装requests模块和BeautifulSoup这两个模块 ''' https://www.autohome.com.cn/all/ 爬取图片和链接 写入数据库里边 ...
- SQLSERVER中的ALLOCATION SCAN和RANGE SCAN
SQLSERVER中的ALLOCATION SCAN和RANGE SCAN 写这篇文章的开始,我还不知道ALLOCATION SCAN的工作原理是怎样的,网上资料少得可怜 求助了园子里的某位大侠,他看 ...
随机推荐
- Chapter7(类) --C++Prime笔记
类(关键词):数据抽象(数据成员和函数成员),封装(private),构造函数,静态成员 1.判断一个类是否是抽象数据类型,可以看我们对这个类的操作是对你内的数据成员操作,自己编写相应的处理函数,还是 ...
- 三、java面向对象编程_1
目录 一.对象和类的概念 二.对象和引用 1.对象 2.成员变量 3.引用 三.java类的定义 四.构造函数(构造方法) 五.内存分析 一.对象和类的概念 1.对象 对象用计算机语言对应问题域中事物 ...
- python的map函数的使用方法详解以及使用案例(处理每个元素的自增、自减、平方等)
1.用我们之前学过的求一下平方(只有一个列表) #求平方 num=[1,5,6,2,7,8] a=[] for n in num: a.append(n**2) print (a) C:\python ...
- Ansible11:变量详解
目录 简单说明 一.在Inventory中定义变量 二.在Playbook中定义变量 1.通过vars关键字定义 2.通过vars_files关键字引入变量文件 3.通过vars_prompt来实现人 ...
- vue的全局指令
vue有四个全局指令:directive.extent.set.component directive:自定义指令 //写一个改变颜色的指令 Vue.directive('amie',function ...
- Hadoop生态圈-Hbase的API常见操作
Hadoop生态圈-Hbase的API常见操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- 哈密顿图 哈密顿回路 哈密顿通路(Hamilton)
本文链接:http://www.cnblogs.com/Ash-ly/p/5452580.html 概念: 哈密顿图:图G的一个回路,若它通过图的每一个节点一次,且仅一次,就是哈密顿回路.存在哈密顿回 ...
- Angular5基本入门
基本环境安装 首先,确定安装了nodejs与npm,angular 5要求node版本在6.9.x以上.npm版本在 3.x.x以上: 1.安装@angular/cli npm install -g ...
- [整理]document.execCommand()
http://msdn.microsoft.com/en-us/library/ms533049%28VS.85%29.aspx http://blog.csdn.net/lhrhi/article/ ...
- mysql 允许远程登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;flush privileges;