ABC391D题解
前置知识:
mappriority_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 ...
随机推荐
- 【单片机】I/O口实验
要求:拨动开关,让所亮小灯位置左移或者右移 #include <STC8.H> #include <intrins.h> void delay(){ int i,j; for( ...
- docker 1.13版本修改默认存储路径及添加私有registry
1.服务器安装dockeryum install docker -y12.修改配置文件方法1: 编辑 `/etc/sysconfig/docker`文件 修改`OPTION`选项 添加 --insec ...
- Qt编写跨平台RTSP/RTMP/HTTP视频流播放器
一.前言 很早以前就做过这款播放器的入门版本,最开始用的ffmpeg去解析,后面陆续用vlc播放器.mpv播放器来做,毕竟播放器提供的接口使用也很方便,而且功能强大,后面发现播放器主要的应用场景是播放 ...
- [转]Windows10下CLion配置说明
Windows10下CLion配置说明CLion 是 C/C++的 IDE,可以配置多种编译环境,本文以配置MinGW编译环境为例. 安装CLion 的安装可直接到官网下载 ZIP,文件解压后直接运行 ...
- 基于Netty的IM聊天加密技术学习:一文理清常见的加密概念、术语等
1.引言 在社区中,分享了很多篇基于Netty编写的IM聊天入门文章(比如<跟着源码学IM>系列.<基于Netty,从零开发IM>系列等),在这些文章中分享了各种IM通信算法原 ...
- 即时通讯安全篇(十一):IM聊天系统安全手段之传输内容端到端加密技术
本文由融云技术团队分享,原题"互联网通信安全之端到端加密技术",内容有较多修订和改动. 1.引言 在上篇<IM聊天系统安全手段之通信连接层加密技术>中,分享了关于通信连 ...
- 【记录】使用R2 CDN替换本地项目图片以加速图片加载
将图片存储到 Cloudflare 的存储桶中,并通过其提供的公共 URL 来替换代码中的本地路径,可以减小项目中打包的图片文件体积 实现方法的详细步骤: 1. 上传图片到 Cloudflare 的存 ...
- 在linux上Git配置多个SSH-Key
Git配置多个SSH-Key SSH Key 背景 当有多个git账号时,比如: a. 一个gitee,用于公司内部的工作开发: b. 一个github,用于自己进行一些开发活动: c.一个gitla ...
- 京东从 OpenStack 改用 Kubernetes 的始末
构建集群的历史 物理机器的时代(2004年-2014年) 在2014年之前,我们公司的应用程序都部署在物理机器上.在物理机器时代,为了给即将上线的应用程序分配物理机器,我们平均需要等上一周的时间.由于 ...
- DICOM-SCP,可以直接使用的SCP(.net framework 4.6.1以上)控制台接收端
此程序只能运行在.net framework 4.6.1版本上的环境,如果要运行在低版本环境,请看上一篇文档 using System; using System.IO; using System.T ...