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 ...
随机推荐
- ast-hook-for-js-RE安装
# ast-hook-for-js-RE安装 1.项目地址 点我去 2.clone到本地 git clone https://github.com/CC11001100/ast-hook-for-js ...
- iaas,saas,paas,daas区别:
iaas,saas,paas,daas区别: Iaas(Infrastructure as a server):基础设施即服务,是基础层.PaaS(Platform as a Server):平台即服 ...
- 【转载】FISCO BCOS 区块链浏览器的部署
https://www.cnblogs.com/linbin524/p/11101801.html 前提 前面我们已经通过底层部署.sdk调测.自定义智能合约编写与部署.联合单元测试调测,已经初步对F ...
- Vue3封装一个ElementPlus自定义上传组件2--无弹窗
Vue3封装一个ElementPlus自定义上传组件2--无弹窗 写在前面: 无弹窗的上传组件它来了,依旧是小巧又好用,只不过这回我用的是前端直传的方式,采用http-request进行文件上传,中间 ...
- modbus调试助手/mqtt调试工具/超轻巧物联网组件/多线程实时采集/各种协议支持
一.前言说明 搞物联网开发很多年,用的最多的当属modbus协议,一个稳定好用的物联网组件是物联网平台持续运行多年的基石,所以这个物联网组件从一开始就定位于自研,为了满足各种场景的需求,当然最重要的一 ...
- Qt编写可视化大屏电子看板系统15-曲线面积图
一.前言 曲线面积图其实就是在曲线图上增加了颜色填充,单纯的曲线可能就只有线条以及数据点,面积图则需要从坐标轴的左下角和右下角联合曲线形成完整的封闭区域路径,然后对这个路径进行颜色填充,为了更美观的效 ...
- FluentAssertions:C#单元测试断言库,让测试代码更加直观、易读!
推荐一个C#开源库,用于单元测试中的断言,它提供了一系列的扩展方法,使得单元测试的断言看起来更加自然流畅. 01 项目简介 FluentAssertions 是一个基于 .NET 的断言库,它提供了一 ...
- 解密Prompt45. 再探LLM Scalable Oversight -辩论、博弈哪家强
之前我们已经介绍过几个针对Scalable Oversight的解法,也就是当模型能力在部分领域超越人类标注者后,我们该如何继续为模型提供监督信号,包括 持续提升Verifier的能力,辅助人类提供监 ...
- macOS安装编译pcl
macOS安装编译pcl git clone git@github.com:PointCloudLibrary/pcl.git cd pcl brew install eigen brew insta ...
- 如何禁止Chrome自动更新IDM扩展程序
背景是使用学习版IDM下载器,版本6.41.2,地址备份:https://github.com/glucyzz/IDM 下载完成后导入chrome浏览器,但是发现挂了小猫之后浏览器立马就把此插件自动更 ...