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 核弹危机的更多相关文章

  1. vijos题解

    Vijos题解 题库地址:https://vijos.org/p P1001 谁拿了最多奖学金 题意:按照指定要求计算奖学金,直接用if判断即可 #include<iostream> us ...

  2. NSA永恒之蓝病毒,如何通过360工具修复?

    简介: NSA武器库的公开被称为是网络世界"核弹危机",其中有十款影响Windows个人用户的黑客工具,包括永恒之蓝.永恒王者.永恒浪漫.永恒协作.翡翠纤维.古怪地鼠.爱斯基摩卷. ...

  3. [转帖]IPV6取代IPV4之路 为何道阻且长?

    IPV6取代IPV4之路 为何道阻且长? 经济学人公众号 IPV6作为IPV4的续命神术,从被提出到现今,逾26年之久.而IPV6在中国更是犹抱琵琶半遮面,千呼万唤难出来,IPV6取代IPV4之路,为 ...

  4. 【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募

    http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include< ...

  5. vijos P1915 解方程 加强版

    背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...

  6. vijos P1780 【NOIP2012】 开车旅行

    描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为 ...

  7. 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险

    http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...

  8. 【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流

    http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ ...

  9. 首师大附中科创教育平台 我的刷题记录 0304 50095106扔核弹(XDC,你懂的)

    今天给大家献上"C"级题:50095106扔核弹(XDC,你懂的)!! 试题编号:0304   50095106扔核弹(XDC,你懂的) 难度级别:C: 运行时间限制:1000ms ...

随机推荐

  1. 原创|强大!Nginx 配置在线一键生成“神器”

    Nginx作为一个轻量级的HTTP服务器,相比Apache优势也是比较明显的,在性能上它占用资源少,能支持更高更多的并发连接,从而达到提高访问效率;在功能上它是一款非常优秀的代理服务器与负载均衡服务器 ...

  2. 【RS】Automatic recommendation technology for learning resources with convolutional neural network - 基于卷积神经网络的学习资源自动推荐技术

    [论文标题]Automatic recommendation technology for learning resources with convolutional neural network ( ...

  3. 论文阅读: Direct Monocular Odometry Using Points and Lines

    Direct Monocular Odometry Using Points and Lines Abstract 大多数VO都用点: 特征匹配 / 基于像素intensity的直接法关联. 我们做了 ...

  4. 应用Redis分布式锁解决重复通知的问题

    研究背景: 这几天被支付宝充值后通知所产生的重复处理问题搞得焦头烂额, 一周连续发生两次重复充钱的杯具, 发事故邮件发到想吐..为了挽回程序员的尊严, 我用了Redis的锁机制. 事故场景: 支付宝下 ...

  5. git自动提交脚本

    每次在linux都要重新一遍一遍敲着这些重复的代码,我想着能够优化一下,做个一键脚本,减少重复劳动. #!/bin/bash git status read -r -p "是否继续提交? [ ...

  6. Teradata 数据库介绍

    Teradata在整体上是按Shared Nothing 架构体系进行组织的,他的定位就是大型数据仓库系统,定位比较高,他的软硬件都是NCR自己的,其他的都不识别:所以一般的企业用不起,价格很贵.由于 ...

  7. 【07】Jenkins:流水线(Pipeline)

    写在前面的话 个人认为 Pipeline 在 Jenkins 中算是一个优化性功能,它能够将我们的构建服务的整个过程流程化,这意味着当我们在执行到某一步的时候,可以添加询问,提示我们是否继续运行下一步 ...

  8. javascript中的异步操作以及Promise和异步的关系

    https://segmentfault.com/a/1190000004322358 Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和强大 https://se ...

  9. Java自学-I/O 字符流

    Java的字符流 Reader Writer Reader字符输入流 Writer字符输出流 专门用于字符的形式读取和写入数据 步骤 1 : 使用字符流读取文件 FileReader 是Reader子 ...

  10. 【USACO】香甜的黄油

    这是一道来自USACO的题,一般歪果仁的题都不是很好做,就比如这题 题目描述: 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶 ...