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 ...
随机推荐
- tecplot——Fluent重叠网格解决方案
算例来源:http://blog.sina.com.cn/s/blog_af99efb50102xoh3.html 受上篇博文的启发,在tecplot当中也能采用类似的方法处理Fluent的重叠网格计 ...
- java web开发入门七(mybatis)基于intellig idea
mybatis 一. 入门开发步骤 1.导入相关jar包 mybatis3.4.2核心开发包 asm-5.1.jarcglib-3.2.4.jarcommons-logging-1.1.3.jarlo ...
- Airtest网易开源的一款UI自动化测试工具
Airtest网易开源的一款UI自动化测试工具 1 Airtest 简介Airtest Project是网易游戏内部工具团队开发并开源的一款UI自动化测试工具,据说曾经获得谷歌力挺. AirtestI ...
- FZU 1759 题解 欧拉降幂
本题考点:欧拉降幂 Super A^B mod C Given A,B,C, You should quickly calculate the result of A^B mod C. (1<= ...
- Android ADB 实用总结
一.背景 从系统架构上来说,Android是基于Linux系统基础上,做了进一步的定制与修改,并融入了自身的特有功能,且向应用层提供应用程序接口,供开发者使用.系统内核层面,主体依然是Linux内核. ...
- win10系统优化
1.服务:关闭 windows update\ windows search \ windows 备份 2.系统:高级系统设置->性能最优,同事修改虚拟内存如下 3.任务管理器:关闭多余的启动项 ...
- MySQL:实用 SQL 语句集合
写在前面的话 本文主要用于记录工作中不经常使用但是偶尔用到又非常有用的 SQL 语句,持续不断不定期更新. 数据库大小统计 1. 查看 MySQL 某个库的所有表大小,记录数,占用空间等. ,), ' ...
- .NET MVC 序列化与反序列化
using System.Runtime.Serialization.Json; using System.IO; using System.Text; //序列化 public str ...
- 如何大批量的识别图片上的文字,批量图片文字识别OCR软件系统
软件不需要安装,直接双击打开就可以用,废话不多说直接上图好了,方便说明问题 批量图片OCR(批量名片识别.批量照片识别等)识别,然后就下来研究了一下,下面是成果 使用步骤:打开单个图片识别,导入文件夹 ...
- Mysql外键约束之CASCADE、SET NULL、RESTRICT、NO ACTION
Mysql中有目前只有InnoDB引擎支持外键约束,InnoDB中外键约束定义的语法如下: ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN ...