题面:去一个神奇的网页: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. Android Matrix理论与应用详解

    转:http://zensheno.blog.51cto.com/2712776/513652 Matrix学习——基础知识 以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,前段时间在使用GD ...

  2. Big Number HDU - 1212

    As we know, Big Number is always troublesome. But it's really important in our ACM. And today, your ...

  3. windows安装vscode,配置golang环境

    出现的问题: 进行如下命令进行目录切换:cd %GOPATH%\src\github.com\golang我这里的GOPATH是在D:\GoPath,大家这里一定要注意些如果src目录下面没有gith ...

  4. <linux常用命令>初级版

    显示时间 date 显示日历cal 变换目录 cd 显示当前所在目录 pwd 建立新目录 mkdir -p a/b/c 删除空目录 rmdir 当前目录下文件和目录显示 ls 复制 cp 文件 路径 ...

  5. MVC中利用ViewBag传递Json数据时的前端处理方法

    用viewBag传递Json字符串到前端时,json字符串中的“会被转义为& quot,前端处理方法为@Html.Raw(Json.Encode(ViewBag.Data)),再用eval() ...

  6. docker上安装ActiveMQ

    1.查看是否已经存在镜像 docker images 2.搜索镜像 docker search activemq 3.拉取镜像 docker pull webcenter/activemq 4.构建容 ...

  7. WebClient 上传文件 上传文件到服务器端

    一直对于上传文件到服务器端困惑:以前,现在,学到了关于WebClient的post知识 瞬间对于上传文件到服务器觉得好轻松: 原理很简单:我们通过post服务器的页面:把本地的文件直接传递过去: 现在 ...

  8. LINUX常用操作命令和命令行编辑快捷键

    终端快捷键: Ctrl + a/Home 切换到命令行开始 Ctrl + e/End 切换到命令行末尾 Ctrl + l 清除屏幕内容,效果等同于clear Ctrl + u 清除剪切光标之前的内容 ...

  9. 洛谷P2371 [国家集训队]墨墨的等式

    P2371 [国家集训队]墨墨的等式 题目描述 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+-+anxn=Ba_1x_1+a_2y_2+-+a_nx_n=Ba1​x1​+a2​y2​+-+a ...

  10. selenium学习笔记11——driver.get(url) 页面加载时间太长

    在执行自动化测试用例过程中,发现因为网络慢或其他原因导致driver.get(url) 时,页面一直在加载,页面没有加载完成就不会去继续执行下面的动作,但是实际上需要操作的元素已经加载出来了. 解决方 ...