2549. 删除他们! 解题报告
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. 删除他们! 解题报告相关推荐
- 2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案
2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案 1.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. ...
- 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- LeetCode第45场双周赛-解题报告
LeetCode第45场双周赛-解题报告 A. 唯一元素的和 原题链接 https://leetcode-cn.com/problems/sum-of-unique-elements/ 解题思路 因为 ...
- Tarjan算法求解桥和边双连通分量(附POJ 3352 Road Construction解题报告)
http://blog.csdn.net/geniusluzh/article/details/6619575 在说Tarjan算法解决桥和边双连通分量问题之前我们先来回顾一下Tarjan算法是如何求 ...
- [解题报告]Codeforces 105D Entertaining Geodetics
Abstract Codeforces 105D 并查集(官方标的) Body Source http://codeforces.com/problemset/problem/105/D Descri ...
- 7月算法训练------第十四天(栈)解题报告
7月算法训练------第十四天(栈)解题报告 题目类型:栈 题目难度:简单 第一题.1614. 括号的最大嵌套深度 题目链接:1614. 括号的最大嵌套深度 思路分析: 遍历整个字符串,如果是'(' ...
- 数据结构荣誉课-第一次实验-解题报告
JLU-数据结构荣誉课-第一次实验-解题报告 一.重复计数 题目 思路 参考代码 二.报数游戏 题目 思路 参考代码 三.算术表达式计算 题目 思路 参考代码 四.最喜爱的序列 题目 思路 单调队列 ...
- 【解题报告】2015ACM/ICPC亚洲区上海站
题目链接 A.An Easy Physics Problem(HDU 5572) 思路 我们可以将问题分为以下 22 种情况: 球与圆柱相撞 球与圆柱不相撞 我们可以通过判断以 AA 为起点以 V⃗ ...
- [LeetCode]844. Backspace String Compare 解题报告(C++)
[LeetCode]844. Backspace String Compare 解题报告(C++) 题目描述 Given two strings S and T, return if they are ...
最新文章
- 深度学习的算法实践和演进
- MyEclipse6.0注册码算法代码,MyEclipse7.0注册码算法代码
- 802.1x认证协议的应用
- Qt下继承于QObject创建的线程
- mysql有闪回吗_mysql 闪回测试
- TCP四种定时器--学习笔记
- 浅析MySQL存储引擎序列属性
- 记录一次 Win10 通过 VirtualBox安装CentOS7 的辛酸史
- mysql 5.7 主主配置文件_MySQL 5.7主主备份配置
- 计算机无steam服务,有了这个,或许以后都不用登录电脑的Steam了
- Word 分节设置不同起始页码
- 药品计算机系统操作知识培训,新版GSP:计算机系统专业知识培训测试题(6)
- Pixel2Mesh-Tensorflow2
- IPA包重签企业证书
- php xmp,xmp可以一直开着吗
- 电动车电池放电口能冲电吗充电口和放电口是同一个吗
- fprintf()函数的运用
- 新冠疫情反复期间,物联网技术可以如何应用
- Couchbase 分享 PPT
- Matlab显示串口收发的中文数据
热门文章
- 星空华文通过聆讯:吃《中国好声音》老本 华人文化是股东
- MySQL原理与实践(三):由三种数据结构引入MySQL索引及其特性
- 公关,从讲好一个故事开始
- 支付系统,支付流程及实现介绍
- 没有对象,你凭什么成为百万富翁
- 【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )
- 角逐“互联网+疫苗”赛道,百度健康杀入医药电商巨头腹地
- 高中生可发表论文的学术期刊涵盖TCR历史期刊
- Spring Cloud之openfeign 处理服务平滑上下线
- iframe框架下的子父级页面监控页面关闭事件