ARC147E 做题记录

news/2024/10/6 3:22:40/文章来源:https://www.cnblogs.com/Sktn0089/p/18286449

link

巧妙的题。

我们相当于选择一个尽量小的集合 \(S\),重新分配 \(S\) 中所有人的分数,使得最后所有人都满足要求。

先把本来就不符合要求的加入 \(S\),然后考虑再多加哪些人。

考虑转化条件:考虑从值域入手。发现 \(S\) 合法的充要条件是:\(\forall k\)\(\sum\limits_{x \in S} [a_x \le k] \ge \sum\limits_{x \in S} [b_x \le k]\)

证明比较显然。

那么我们可以离散化,然后从小到大枚举值域。维护 \(a_x\le k\)\(b_x\le k\) 的人的个数 \(cnta,cntb\),用大根堆维护可以其他的可以贡献的人即可。

这启示我们,条件的转化不一定需要性质,换个入手点也一样行。

点击查看代码
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define pir pair <ll, ll>
#define fi first
#define se second
#define mkp make_pair
using namespace std;
const ll maxn = 6e5 + 10;
ll n, a[maxn], b[maxn], h[maxn], ht, cnta, cntb, dr[maxn], tr[maxn];
vector <ll> vec[maxn], vect[maxn];
priority_queue <pir> q;
int main() {scanf("%lld", &n);for(ll i = 1; i <= n; i++) {scanf("%lld%lld", a + i, b + i);h[++ht] = a[i], h[++ht] = b[i];}sort(h + 1, h + 1 + ht);ht = unique(h + 1, h + 1 + ht) - h - 1;for(ll i = 1; i <= n; i++) {a[i] = lower_bound(h + 1, h + 1 + ht, a[i]) - h;b[i] = lower_bound(h + 1, h + 1 + ht, b[i]) - h;if(a[i] >= b[i]) vec[b[i]].pb(i);else vect[a[i]].pb(i);}for(ll i = 1; i <= ht; i++) {for(ll j: vect[i]){++dr[b[j]];++cnta;}for(ll j: vec[i]) q.push(mkp(a[j], j));cntb += dr[i], cnta += tr[i];while(cnta > cntb) {ll x = q.empty()? 0 : q.top().se;if(a[x] <= i) {puts("-1");return 0;}++cntb, q.pop();++tr[a[x]];}}printf("%lld", (ll) q.size());return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/738916.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

#cmd的常用命令(Dos)

cmd的常用命令首先win+r输入cmd并回车进入cmd命令中cd 命令:进入指定目录cd d:进入d盘目录.会发现进入不了d盘,因为cd只能在当前目录下操作不能跨区操作. 键入d:回车进入d盘.我d盘下有aaa文件夹cd aaa进入文件夹aaa目录下提示 ".."为上一级目录."."为当前…

StarRocks数据导入慢问题解决

一、问题描述依据StarRocks官网快速开始安装教程,用docker compose安装了starrocks,log模块从rabbitMq的队列批量获取log消息,发现队列消息有堆积,一晚上下来大概能对接4000条消息。经单元测试发现insert into到starrocks中时间竟然相差几百倍。 mysql每条insert sql执行3.…

CAN转PN网关模块连接激光切割机的配置方法

本文介绍了兴达易控CAN转Profinet网关模块(XD-PN_CAN20)用于连接CAN激光切割机的使用方法,激光切割机在工业生产中被广泛应用,而激光发射器与控制设备常以不同的协议存在两者之间,CAN总线和Profinet以各自的特点被广泛用于设备当中。本文将介绍介绍兴达易控CAN转Profinet网…

R语言、SAS潜类别(分类)轨迹模型LCTM分析体重指数 (BMI)数据可视化|附代码数据

全文下载链接: http://tecdat.cn/?p=26105 最近我们被客户要求撰写关于LCTM的研究报告,包括一些图形和统计输出。 在本文中,潜类别轨迹建模 (LCTM) 是流行病学中一种相对较新的方法,用于描述生命过程中的暴露,它将异质人群简化为同质模式或类别。然而,对于给定的数据集…

第二章 和式

记号 求和的符号有两种形式 第一种是确定界限的形式,也叫封闭形式,例如:\(\sum\limits_{k=1}^n a_k\) 第二种叫做一般形式,就是把一个或者多个条件写在 \(\sum\) 符号的下面,例如刚刚的例子可以写成 \(\sum\limits_{1\le k \le n} a_k\) 和式和递归式的转化 和式和递归式之…

Andriod SDK安装教程

前言 最简单的方式 我们使用ANDROID STUDIO这款开发工具下载对应的Andriod SDK。 可是我们如果不开发安卓,只是用它的一些SDK包的话而安装整个开发工具,就没必要了。 这里讲的是用独立的 命令行工具 来操作。 下载命令行工具 点击此处进入下载页面, 滑动到最下边,选择合适的…

动态规划--打家劫舍-零钱兑换-算法刷题01

目录1. 概念2. 打家劫舍3 零钱兑换 1. 概念 关于动态规划这类问题 强烈建议学完下面的帖子: https://blog.csdn.net/qq_16664581/article/details/89598243 理解动态规划的使用场景强烈建议读一下这个故事: https://www.cnblogs.com/sdjl/articles/1274312.html 步骤:确定问…

一天快速入门Django:从0到1创建属于自己的Web应用

本文详细讲解了从零开始构建自己的 Web 应用所需的 Django 操作步骤。文章以简明易懂的方式引导读者设置开发环境,创建 Django 项目和应用,定义数据模型,编写视图函数和模板,以及配置 URL 路由。强调了 Django 框架的高效性和灵活性,特别是其基于 MTV(模型、模板、视图)…

羽云十六进制编辑器之插件开发文档

羽云十六进制编辑器的开发文档首页【占位】本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可本文来自博客园,作者:寂静的羽夏 ,一个热爱计算机技术的菜鸟转载请注明原文链接:https://www.cnblogs.com/wingsummer/p/18286419

Mybatis PageHelper编译SQL引发的一次性能问题.18286262

起源 最近一直在跟大佬们做公司项目的性能优化,我这种小卡乐咪基本上负责的就是慢接口优化,但实际上只有以下几种情况需要进行接口代码级别的改造:循环查库、RPC 数据库设计不合理 业务流程太长,代码耦合性太高等随着对接口分析的深入,我们越来越发现系统中有很多拖后腿的…

蓝牙音箱App设计总结

前言 最近做了一个关于带Sound bar的智能电视的蓝牙项目,就是将电视Sound bar当作蓝牙音箱,将手机、电脑等设备的声音传输到电视,通过电视Soundbar播放声音。做这个项目的时候遇到了各种大大小小的问题,好在都解决了。本篇文章总结了在设计蓝牙相关的项目时需要了解的小知识…

设计模式学习(二)工厂模式——抽象工厂模式

介绍抽象工厂模式,并说明其优缺点目录背景抽象工厂模式优点与缺点 背景 现在我需要开发一个相机操作模块,它可能在Windows下运行,也可能在Linux下运行。由于在厂家提供的SDK中,Windows下的SDK和Linux下的SDK是有区别的,因此我们要创建两个类去封装这两个不同平台下的API。…