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 ...
随机推荐
- Element Plus组件库el-select组件多选回显踩坑
前情 公司有经常需要做一些后台管理页面,我们选择了Element Plus,它是基于 Vue 3,面向设计师和开发者的组件库,是Vue框架生态中比较火的UI组件库,组件库丰富易用,组件链接:一个 Vu ...
- 跨平台交叉编译 Native AOT
如何将.NET 应用程序发布到鸿蒙上,肯定是很多人感兴趣的话题,目前.NET完全具备可以在OpenHarmony系统上运行的能力,.NET 现在有很多选项CoreCLR.Mono和NativeAOT. ...
- 【网站搭建】开源社区Flarum搭建记录
环境 服务器系统:腾讯云 OpenCloudOS 宝塔版本:免费版8.0.1 Nginx:1.24.0 MySQL:5.7.42 PHP:8.1.21 萌狼蓝天 2023年8月7日 PHP设置 1.安 ...
- 【爬虫】XPath实例
题目要求我们用XPATH去爬某个网站并且保存为CSV文件 代码如下,仅供参考 # -*- coding: UTF-8 -*- # 开发人员:萌狼蓝天 # 博客:Https://mllt.cc # 笔记 ...
- 解决编译redis报错zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory
编译redis时报错:zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory,执行: # sudo m ...
- Qt音视频开发20-vlc内核动态保存录像文件(不需要重新编译源码)
一.前言 在vlc默认提供的保存文件方式中,通过打开的时候传入指定的参数来保存文件,直到关闭播放生成文件,这种方式简单暴力,但是不适用大部分的场景,大部分时候需要的是提供开始录制和停止录制的功能,也就 ...
- Qt编写的项目作品6-可视化大屏电子看板系统
一.功能特点 采用分层设计,整体总共分三级界面,一级界面是整体布局,二级界面是单个功能模块,三级界面是单个控件. 子控件包括饼图.圆环图.曲线图.柱状图.柱状分组图.横向柱状图.横向柱状分组图.合格率 ...
- matlab中mat文件的生成和读取
1.mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件. 点 ...
- 阿里IM技术分享(七):闲鱼IM的在线、离线聊天数据同步机制优化实践
本文由阿里闲鱼技术团队书闲分享,原题"如何有效缩短闲鱼消息处理时长",有修订和改动,感谢作者的分享. 1.引言 闲鱼技术团队围绕IM这个技术范畴,已经分享了好几篇实践性总结文章,本 ...
- java解析CSV文件三种方法(openCSV)
一.简介1.pom.xml<!-- csv文件解析依赖 --><dependency> <groupId>com.opencsv</groupId> & ...