题面:去一个神奇的网页:https://www.cnblogs.com/Juve/articles/11352426.html

听说打O(nmq)有70

但是显然博主只有50分

考点:前缀和的综合应用

标算为:对于不包含环的图,连通块数目=点数-边数,所以利用二维前缀和进行预处理,O(1)求出矩形区域内的边数和点数.

很好写的70分算法:对每组询问都暴力求连通块数目的复杂度为O(NMQ),可以通过前7个测试点.出题人认为,在考场上,一个水平中等的选手最佳的策略是采用这个70分算法以留出时间思考第三题.

第3,4,5,6个测试点的其他做法:利用和标算同样的思路,但不需要二维前缀和,求解时较简单.

第8,9个测试点的目的是照顾常数过大的选手和数组开小的选手.

本题实际上是AtCoder Grand Contest 015的C题,可能会有一些选手因为做过原题而在本题快速得到高分,但估计不会很多

Liu_runda的官方题解

其实你手玩一下样例就会发现,一个矩形内联通块的数目等于矩形内部所有黑点个数减去所有黑点之间连的边数

维护三个前缀和,分别存黑点个数,行上的边数,列上的边数,这样就能O(1)查询

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>
#define re register
#define MAXN 2005
using namespace std;
int n,m,q,mapa[MAXN][MAXN];
int sum[MAXN][MAXN],sumh[MAXN][MAXN],suml[MAXN][MAXN];
int dx[2]={-1,0},dy[2]={0,-1},h[MAXN][MAXN],l[MAXN][MAXN];
char ch[MAXN];
signed main(){
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++){
scanf("%s",ch+1);
for(int j=1;j<=m;j++){
mapa[i][j]=ch[j]-'0';
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+mapa[i][j];//黑点总数前缀和
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(mapa[i][j]==0) continue;
for(int k=0;k<=1;k++){
int p=i+dx[k],q=j+dy[k];
if(mapa[p][q]==0) continue;
if(k==0) h[p][q]++;
else l[p][q]++;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
sumh[i][j]=sumh[i-1][j]+sumh[i][j-1]-sumh[i-1][j-1]+h[i][j];
suml[i][j]=suml[i-1][j]+suml[i][j-1]-suml[i-1][j-1]+l[i][j];//内部边数的前缀和(行与列)
}
}
for(int i=1,sx,sy,ex,ey;i<=q;i++){
scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
int res1=sum[ex][ey]-sum[sx-1][ey]-sum[ex][sy-1]+sum[sx-1][sy-1];
int res2=suml[ex][ey-1]-suml[sx-1][ey-1]-suml[ex][sy-1]+suml[sx-1][sy-1];
int res3=sumh[ex-1][ey]-sumh[sx-1][ey]-sumh[ex-1][sy-1]+sumh[sx-1][sy-1];
int ans=res1-res2-res3;
printf("%d\n",ans);
}
return 0;
}

HZOI20190813 B,任(duty)的更多相关文章

  1. 单片机模拟 1/2 Bias、1/4 Duty的 LCD 驱动使用方法

    工作原理 方式一     根据 LCD 的驱动原理可知,LCD 像素点上只能加上 AC 电压,LCD 显示器的对比度由 COM脚上的电压值减去 SEG 脚上的电压值决定,当这个电压差大于 LCD 的饱 ...

  2. Others - On Duty

    On Duty This is xxx and will be duty engineer in the next week. Thanks. Here is a kindly reminder. T ...

  3. How to download Heavy Duty Diagnostic Caterpillar SIS 2018 software

    Maybe you find there are supplied Caterpillar SIS 2018 software free download in search engine, that ...

  4. 关于LCD的duty与bias

    关于LCD的duty与bias 关于LCD的duty与bias duty: 占空比将所有公共电极(COM)各施加一次扫描电压的时间叫一帧,单位时间内扫描多少帧的频率叫帧频,将扫描公共电极(COM)选通 ...

  5. 智课雅思短语---三、unshakable duty

    智课雅思短语---三.unshakable duty 一.总结 一句话总结:不可推卸的义务 unshakable duty 1.satisfy/ meet the needs of…? 满足需求 2. ...

  6. CF 958E2. Guard Duty (medium)

    这道题是昨天linkfqy dalao上课讲的一道题 当时他讲的时候就想到了一种玄学的搞法,然后不敢相信自己切掉了 没想到后来CHJ dalao也想到了这种算法,然后发现是对的 后来10min就切掉了 ...

  7. POJ 1293 - Duty Free Shop 01背包记录所选物品

    裸的01背包.dp[x]只要是bool型记录当前空间是否可用.. 而为了找到用了哪些物品..dp[x]设置为int型..进行记录.. Program: #include<iostream> ...

  8. [Codeforces958E2]Guard Duty (medium)(区间DP)

    Description 题目链接 Solution 可以把题目转化一下模型,将间隔取出来,转化为N-1个数,限制不能取相邻两个数,求取K个数的最小价值 设DP[i][j]表示前i个数取j个最大价值(第 ...

  9. Guard Duty (hard) Codeforces - 958E3 || uva 1411

    https://codeforces.com/contest/958/problem/E3 当没有三点共线时,任意一个这样的点集都是保证可以找到答案的,(考虑任意一种有相交的连线方案,一定可以将其中两 ...

随机推荐

  1. 阿里云 Aliplayer高级功能介绍(二):缩略图

    基本介绍 Aliplayer提供了缩略图的功能,让用户在拖动进度条之前知道视频的内容,用户能够得到很好的播放体验,缩略图是显示在Controlbar的上面,并且包含当前的时间,阿里云的媒体处理服务提供 ...

  2. C++——多态

    1. 多态定义的构成条件 多态是在不同继承关系的类对象,去调同一函数,产生了不同的行为. 就是说,有一对继承关系的两个类,这两个类里面都有一个函数且名字.参数.返回值均相同,然后我们通过调用函数来实现 ...

  3. Js 数组的各种方法及操作

    一.数组去重 var arr = [0,1,20,3,0,45,6,0]; Array.prototype.unrepeat = function(){ var array = []; for(var ...

  4. 应用程序正常初始化(0xc0150002)失败的终极解决方案

    转自VC错误:http://www.vcerror.com/?p=62 最近做一个项目写了一个VC6下的MFC程序,结果传到别人的机子上(WIN7)出现了应用程序正常初始化(0xc0150002)失败 ...

  5. error C2712: Cannot use __try in functions that require object unwinding

    转自VC错误:http://www.vcerror.com/?p=52 问题描述: error C2712: Cannot use __try in functions that require ob ...

  6. os.path.dirname(__file__)使用、Python os.path.abspath(__file__)使用

    python中的os.path.dirname(__file__)的使用 - CSDN博客https://blog.csdn.net/u011760056/article/details/469698 ...

  7. collections,time,random,os, sys 模块的使用

    主要内容:1. 模块的简单认识2. collections模块3. time时间模块4. random模块5. os模块6. sys模块 一. 模块的简单认识什么是模块. 模块就是我们把装有特定功能的 ...

  8. 愚人节老板发话了,免费送书 + 免费入驻Java知识星球!!

    愚人节快乐,今天的活动很重磅! 1.免费送5本重量级技术书籍,不骗人,小程序随机抽奖送出哦! 2.免费进星球,哈哈不可能,愚人节快乐!不过今天有重大优惠,见下文! 活动一:免费送出5本重量级书籍 赠书 ...

  9. asp.net Core 获取应用程序所在目录的2种方式

    //获取应用程序所在目录的2种方式(绝对,不受工作目录影响,建议采用此方法获取路径).如:d:\Users\xk\Desktop\WebApplication1\WebApplication1\bin ...

  10. scull 中的设备注册

    在内部, scull 使用一个 struct scull_dev 类型的结构表示每个设备. 这个结构定义为: struct scull_dev { struct scull_qset *data;  ...