VIJOS-P1199 核弹危机
JDOJ 1347: VIJOS-P1199 核弹危机
Description
shibowen和ganggang正在玩红警,可不料shibowen造出了核弹正要发射......(ganggang @_@) 已知核弹的攻击范围是边长n的正方形,ganggang的基地是边长m的正方形 基地样例: ...#.# .#...# ##...# ...... ..#### .#.... #表示房屋,.表示平地,求核弹最多能摧毁多少房屋(被核弹攻击的房屋都会消失,好强啊~~~~~~~)。
Input
第一行基地边长m(10000> m> 0) 第二行核弹攻击边长n(10000> m> -1) 接下来m行输入基地
Output
摧毁最多房屋数
Sample Input
6 3 ...#.# ###### ...... ...... #..... ...###
Sample Output
5
事实证明,这儿的数据水到爆炸,试想,m<10000,读入都读不下...
听说这里的m最大才8.
8///%%%
所以么我们可以考虑爆搜。
但是这种做法极为低级。
我们来介绍几种高级做法。
树状数组 or 前缀和
都是二维的。
树状数组的思路很好想,二维的树状数组统计的是从(1,1)到(x,y)这个区间的#个数。
然后我们就可以应用一下前缀和的思想。

通过这个图,我们可以看出来想要求出基佬紫区域的区间和,可以变成:
getsum(i,j)-getsum(i-n,j)-getsum(i,j-n)+getsum(i-n,j-n)
所以就很简单地出解了:
代码:
#include<cstdio>
#include<algorithm>
using namespace std;
int m,ans,n;
int c[1001][1001];
char str[1001];
void fix(int x,int y)
{
for(int i=x;i<=m;i+=i&-i)
for(int j=y;j<=m;j+=j&-j)
c[i][j]++;
}
int getsum(int x,int y)
{
int ret=0;
for(int i=x;i;i-=i&-i)
for(int j=y;j;j-=j&-j)
ret+=c[i][j];
return ret;
}
int main()
{
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
{
scanf("%s",str+1);
for(int j=1;j<=m;j++)
if(str[j]=='#')
fix(i,j);
}
for(int i=n;i<=m;i++)
for(int j=n;j<=m;j++)
ans=max(ans,getsum(i,j)-getsum(i-n,j)-getsum(i,j-n)+getsum(i-n,j-n));
printf("%d",ans);
return 0;
}
这里我着重请大家注意一下读入,字符读入坑点很多,比如换行也得读进来...
然后我来介绍大佬写的前缀和@ysy
思路大同小异,附上第二份代码(绝壁比我的丑)
请大家择优录取(疯狂暗示)
代码II:
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
#define N 1010
int n,m,many[N][N],ans; char str[N];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%s",str+1);
for(int j=1;j<=n;j++) if(str[j]=='#')
many[i][j]++;
}
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)
many[i][j]+=many[i][j-1];
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)
many[i][j]+=many[i-1][j];
for(int i=m;i<=n;i++) for(int j=m;j<=n;j++)
ans=max(ans,many[i][j]+many[i-m][j-m]-many[i-m][j]-many[i][j-m]);
printf("%d\n",ans);
}
你看还没有return 0。。。
VIJOS-P1199 核弹危机的更多相关文章
- vijos题解
Vijos题解 题库地址:https://vijos.org/p P1001 谁拿了最多奖学金 题意:按照指定要求计算奖学金,直接用if判断即可 #include<iostream> us ...
- NSA永恒之蓝病毒,如何通过360工具修复?
简介: NSA武器库的公开被称为是网络世界"核弹危机",其中有十款影响Windows个人用户的黑客工具,包括永恒之蓝.永恒王者.永恒浪漫.永恒协作.翡翠纤维.古怪地鼠.爱斯基摩卷. ...
- [转帖]IPV6取代IPV4之路 为何道阻且长?
IPV6取代IPV4之路 为何道阻且长? 经济学人公众号 IPV6作为IPV4的续命神术,从被提出到现今,逾26年之久.而IPV6在中国更是犹抱琵琶半遮面,千呼万唤难出来,IPV6取代IPV4之路,为 ...
- 【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include< ...
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
- vijos P1780 【NOIP2012】 开车旅行
描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为 ...
- 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...
- 【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流
http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ ...
- 首师大附中科创教育平台 我的刷题记录 0304 50095106扔核弹(XDC,你懂的)
今天给大家献上"C"级题:50095106扔核弹(XDC,你懂的)!! 试题编号:0304 50095106扔核弹(XDC,你懂的) 难度级别:C: 运行时间限制:1000ms ...
随机推荐
- [转载]3.13 UiPath存在图像Image Exists的介绍和使用
一.Image Exists的介绍 检查是否在指定的UI元素中找到图像,输出的是一个布尔值 二.Image Exists在UiPath中的使用 1.打开设计器,在设计库中新建一个Sequence,为序 ...
- C# socket ipv6初体验
Server: serverSocket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp) ...
- 为什么我的resharper控件安装之后没有显示
Resharper和Resharper C++有时候会出现,安装之后不显示,VisualStudio菜单栏内找不到的情况,大多数是因为启动VisualStudio的时候没有激活Resharper. 安 ...
- Github问题:fatal: unable to access 'https://github.com/LIU-HONGYANG/Algorithm.git/': The requested URL returned error: 403
在向服务器push之后,出现如下问题: The requested URL returned error: 403 解决路径如下: 参考文章: https://stackoverflow.com/qu ...
- C/C++深度优先搜索(递归树模拟)
//C++深度优先搜索(递归树模拟) #define _CRT_SECURE_NO_WARNINGS #include <iostream> #define MAX_N 1000 usin ...
- logstash之mongodb-log
1.logstash6.5.3 配置收集mongodb的日志: 首先在mongodb服务器上部署filebeat收集日志并上传到logstash进行处理,然后上传到ES. filebeat-conf: ...
- R数据挖掘 第二篇:基于距离评估数据的相似性和相异性
聚类分析根据对象之间的相异程度,把对象分成多个簇,簇是数据对象的集合,聚类分析使得同一个簇中的对象相似,而与其他簇中的对象相异.相似性和相异性(dissimilarity)是根据数据对象的属性值评估的 ...
- 【spring boot】spring boot的自定义banner修改+spring boot启动项目图标修改
1.启动Spring Boot项目后会看到这样的图案,这个图片其实是可以自定义的,打开网站 http://patorjk.com/software/taag/#p=display&h=3&am ...
- [转] Nginx配置中的location、root、alias
Nginx配置中的location.root.alias location & root 初始配置 [root@adailinux vhost]# cat rio.conf server { ...
- K8S CoreDNS部署失败,发现的一个问题
K8S CoreDNS部署失败,查看错误日志,提示如下 root >> kubectl get all --all-namespaces -o wide root >> kub ...