2549. 删除他们!

【问题背景】

Sombra 在很小的时候就表现出了对于电脑的天份。
八个月大的时候,她就能自己爬着过去打开电脑。
四岁的时候就能够正常的使用电脑————多数人的那种正常,打字,翻网页什么的。
六岁的时候,她已经开始学习编程了,之后也参加了一些编程比赛。
八岁,在算法领域玩耍了两年的她,转向了实际应用的领域。
这时,“黑客”这个职业进入了她的视野。

不过这次我们要讲的是 Sombra 小时候的事。
三岁的时候, Sombra 的妈妈教她用电脑。
“Sombra,今天我教你删除文件。”
“这个文件夹中有很多文件,我每次可以框选一些文件,然后按下 Del 键,这样它们就被扔到回收站里去了。”
说着,Sombra 妈妈框选了一些文件,删掉了它们,后面的文件向前补了上来。
“我每次在文件夹里框一下,然后删掉它选中的文件,最后,你告诉我还剩了多少个文件好吗?”

【问题描述】

给一个有 N 行,M 列的文件夹,每个位置上原本都有一个文件。
(行编号从上到下递增,列编号从左到右递增,从 0 开始使用)
Sombra 的妈妈一共会框选并删除 Q 次,
每次用 4 个坐标表示,X1,Y1,X2,Y2,表示框选从第 X1 行,Y1 列开始,一直到第 X2 行,Y2 列,包含边界上的文件。

最后请回答,还剩多少个文件没有被删除。

【输入格式】

输入共 Q+1 行。

第 1 行包含 3 个正整数,N,M,Q,含义如上所述。
第 1 +(1) 至 1 +(Q) 行,每行包含 4 个非负的整数,X1,Y1,X2,Y2,含义如上所述。

【输出格式】

输出共 1 行。

第 1 行包含 1 个非负的整数,表示最后剩余的文件数目。

【样例输入】

2 3 2
0 1 0 2
0 2 1 2

【样例输出】

3

【数据规模与约定】

对于测试点 1 到 3,N <= 10; M <= 10; Q <= 5
对于测试点 4 到 10,Q <= 100

对于全部数据,保证 N*M <= 1,000,000; 0 <= X1 <= X2 < N; 0 <= Y1 <= Y2 < M; Q <= 100

全部数据中的X1,Y1,X2,Y2均为在其合法范围内随机先选出的。

【更多说明】

文件向前补齐规则:
如果文件本行前一列位置处为空,则补到前一列
如果文件位于某行第一个,前一行最后一列位置处为空,则补到前一行末尾 如此循环,直至不能再补为止
(与 Windows 系统的文件夹中删除文件后向前补齐的规则相同)

解题思路该题删除文件时可以看成直接从后面删,因为删掉的文件还会有后续补上相当于从后删(x2-x1)*(y2-y1)个;所以可以先扫一下x1,x2,y1,y2范围内有多少文件,就从后面删几个文件,div一下再mod一下就行了。但要注意上一次未删完的文件个数,本次应先将mod所得与未删完个数比较,若mod大于未删完个数,将div++,mod=mod-未删完个数再操作。



思路就是这样的,再观察数据,100%的数据是N*M<=1,000,000;可能有人不会搞二维数组的MAXM,MAXN,因为开小会T,开大会M,就是A不了。因此,我们应该记住,看到m*n的数据范围,很多时候应该用一维数组来模拟二维数组,相当于开散列。



代码如下:

#include <cstdio>
using namespace std;
bool mp[1000003];
int N, M, Q;
int S;
void work() {int X1, Y1, X2, Y2;scanf("%d %d %d %d", &X1, &Y1, &X2, &Y2);for (int i = X1; i <= X2; i++)for (int j = Y1; j <= Y2; j++)mp[i*M+j] = true;int lt = 0;for (int i = 0; i < S; i++)if (!mp[i])mp[lt++] = false;S = lt;
}
int main() {freopen("deleteit.in", "r", stdin);freopen("deleteit.out", "w", stdout);scanf("%d %d %d", &N, &M, &Q);S = N*M;for (int i = 0; i < Q; i++)work();printf("%d\n", S);return 0;
}

2549. 删除他们! 解题报告相关推荐

  1. 2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案

    2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案 1.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. ...

  2. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  3. 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  4. LeetCode第45场双周赛-解题报告

    LeetCode第45场双周赛-解题报告 A. 唯一元素的和 原题链接 https://leetcode-cn.com/problems/sum-of-unique-elements/ 解题思路 因为 ...

  5. Tarjan算法求解桥和边双连通分量(附POJ 3352 Road Construction解题报告)

    http://blog.csdn.net/geniusluzh/article/details/6619575 在说Tarjan算法解决桥和边双连通分量问题之前我们先来回顾一下Tarjan算法是如何求 ...

  6. [解题报告]Codeforces 105D Entertaining Geodetics

    Abstract Codeforces 105D 并查集(官方标的) Body Source http://codeforces.com/problemset/problem/105/D Descri ...

  7. 7月算法训练------第十四天(栈)解题报告

    7月算法训练------第十四天(栈)解题报告 题目类型:栈 题目难度:简单 第一题.1614. 括号的最大嵌套深度 题目链接:1614. 括号的最大嵌套深度 思路分析: 遍历整个字符串,如果是'(' ...

  8. 数据结构荣誉课-第一次实验-解题报告

    JLU-数据结构荣誉课-第一次实验-解题报告 一.重复计数 题目 思路 参考代码 二.报数游戏 题目 思路 参考代码 三.算术表达式计算 题目 思路 参考代码 四.最喜爱的序列 题目 思路 单调队列 ...

  9. 【解题报告】2015ACM/ICPC亚洲区上海站

    题目链接 A.An Easy Physics Problem(HDU 5572) 思路 我们可以将问题分为以下 22 种情况: 球与圆柱相撞 球与圆柱不相撞 我们可以通过判断以 AA 为起点以 V⃗  ...

  10. [LeetCode]844. Backspace String Compare 解题报告(C++)

    [LeetCode]844. Backspace String Compare 解题报告(C++) 题目描述 Given two strings S and T, return if they are ...

最新文章

  1. 深度学习的算法实践和演进
  2. MyEclipse6.0注册码算法代码,MyEclipse7.0注册码算法代码
  3. 802.1x认证协议的应用
  4. Qt下继承于QObject创建的线程
  5. mysql有闪回吗_mysql 闪回测试
  6. TCP四种定时器--学习笔记
  7. 浅析MySQL存储引擎序列属性
  8. 记录一次 Win10 通过 VirtualBox安装CentOS7 的辛酸史
  9. mysql 5.7 主主配置文件_MySQL 5.7主主备份配置
  10. 计算机无steam服务,有了这个,或许以后都不用登录电脑的Steam了
  11. Word 分节设置不同起始页码
  12. 药品计算机系统操作知识培训,新版GSP:计算机系统专业知识培训测试题(6)
  13. Pixel2Mesh-Tensorflow2
  14. IPA包重签企业证书
  15. php xmp,xmp可以一直开着吗
  16. 电动车电池放电口能冲电吗充电口和放电口是同一个吗
  17. fprintf()函数的运用
  18. 新冠疫情反复期间,物联网技术可以如何应用
  19. Couchbase 分享 PPT
  20. Matlab显示串口收发的中文数据

热门文章

  1. 星空华文通过聆讯:吃《中国好声音》老本 华人文化是股东
  2. MySQL原理与实践(三):由三种数据结构引入MySQL索引及其特性
  3. 公关,从讲好一个故事开始
  4. 支付系统,支付流程及实现介绍
  5. 没有对象,你凭什么成为百万富翁
  6. 【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )
  7. 角逐“互联网+疫苗”赛道,百度健康杀入医药电商巨头腹地
  8. 高中生可发表论文的学术期刊涵盖TCR历史期刊
  9. Spring Cloud之openfeign 处理服务平滑上下线
  10. iframe框架下的子父级页面监控页面关闭事件