ABC391D题解
前置知识:
map
priority_queue
思路
考虑预处理每一个图块在第几秒后会被删除。
如何预处理?我使用了一种非常暴力的做法,首先处理的过程肯定是从下往上的,于是每一个图块能被删除一定是它对应的每一列都至少有一个图块,而且每次我们肯定都是选择这个图块对应的每一列的离最下面最近的图块去拼成一个全满的形态,然后消消乐,第几秒才能达到全满的形态呢?自然就是选择的图块中离最下面最远的点的高度,每一次选完后都把这些点删掉。
步骤
一开始用一个 map
记录每个坐标是哪个图块,用优先队列存储所有坐标中列数是这个列的所有行,按升序排序,一开始让所有列全部放入另一个 map
,对于 map
中的元素 \(i\),取出第 \(i\) 个优先队列的队首,如果这个队列空了,那就在这第二个 map
中删掉这个元素,然后秒数就是每一个元素取出的队首中的最大值,至于为什么需要第二个 map
,是因为如果这样每次都遍历所有列,时间复杂度会超,所以需要一个 map
时时删除不需要遍历的列。
代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+5;
map<pair<int,int>,int>mp;
int num[N];
priority_queue<int,vector<int>,greater<int>>q[N];
map<int,int>mp1;
signed main()
{
int n,w;
scanf("%d %d",&n,&w);
for(int i = 1;i<=n;i++)
{
int x,y;
scanf("%d %d",&x,&y);
swap(x,y);
mp[{x,y}] = i;
if(mp1.find(y) == mp1.end())
{
mp1[y] = 1;
}
q[y].push(x);
}
while(mp1.size())
{
int maxx = 0;
if(mp1.size() == w)//如果可以组成全满形态
{
for(auto it = mp1.begin();it!=mp1.end();it++)
{
int y = it->first;
int x = q[y].top();
maxx = max(maxx,x);
}
}
else
{
maxx = 2e9;//如果不能组成全满形态,那么选出的这些图块就不会被删
}
for(auto it = mp1.begin();it!=mp1.end();)
{
int y = it->first;
int x = q[y].top();
q[y].pop();
num[mp[{x,y}]] = maxx;
if(!q[y].size())
{
it = mp1.erase(it);
}
else
{
it++;
}
}
}
int _;
scanf("%d",&_);
while(_--)
{
int x,y;
scanf("%d %d",&x,&y);
if(x>=num[y])
{
printf("No\n");
}
else
{
printf("Yes\n");
}
}
return 0;
}
ABC391D题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- 第一个 milestone:内推 50 人拿到微软 offer!
就在昨天,我的一位候选人和我说,他已经通过面试,正在 offer 沟通阶段.由此,我达成第一个小里程碑:成功内推 50 人拿到了微软 offer! 内推了多少人? 从 2019 年年初开始内推,到现在 ...
- 使用 VS Code 徒手构建 PDF 文件
使用 VS Code 徒手构建 PDF 文件 PDF 文件是广泛应用的页面描述文件格式,从本质上讲,文件内部的结构混合使用了文本格式描述和二进制格式描述,对于简单的文件,比如说我们今天要创建的第一个 ...
- 各版本jdk百度云下载,包括linux版和windows版
并不是越新的版本就一定越好,请先考虑jdk的版本是否跟你的开发环境有版本冲突问题. 2021-11-4更新 ps:从官网下载实在是太慢了!! 官网链接:https://www.oracle.com/j ...
- Qt编写的项目作品32-定制化安装包工具(雨田哥作品)
一.功能特点 纯Qt编写,跨平台. 支持自定义安装目录等. 安装和卸载界面可自定义. 一键式脚本build.bat,生成安装包EXE. 兼容XP系统. 支持配置文件填充安装包信息. 指定应用程序中文名 ...
- 深入Python胶水语言的本质:从CPython到各类扩展机制
在开始深入讲解Python如何作为胶水语言之前,我们需要先了解Python语言本身的实现机制.这对于理解Python如何与C语言交互至关重要. CPython:Python的默认实现 当我们谈论Pyt ...
- springboot starter 原理解析及实践
什么是springboot starter starter是springBoot的一个重要部分.通过starter,我们能够快速的引入一个功能,而无需额外的配置.同时starter一般还会给我提供预留 ...
- w3cschool-Go 教程
https://www.w3cschool.cn/go/ Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Griesemer, Rob Pi ...
- nginx中的正则表达式,location路径匹配规则和优先级
前言,我这里验证的nginx-v1.23.2单机环境下的nginx中的正则表达式.location路径匹配规则和优先级. 先准备好环境,基础配置是这样 nginx/conf/conf.d/host.c ...
- 牛客周赛 Round 77
题目链接:牛客周赛 Round 77 A. 时间表 tag:签到 B. 数独数组 tag:签到 Description:给定n个数,每个数的范围为1-9,问能否经过排列,使其每个长度为9的连续子数组都 ...
- rpc项目中的长连接与短连接的思考
对于rpc项目,在接受大佬指导的时候曾问过对于长连接和短连接是处理处理的,在面试的时候也被问起socket是长连接还是短连接,发现自己没有好好思考过这个问题,因此好好总结一下. 前置知识点:rpc基础 ...