首页 > 其他分享 >【解题报告】Examination

【解题报告】Examination

时间:2022-11-05 14:59:44浏览次数:81  
标签:ch 报告 int top while 解题 Examination include

Examination

本题解借鉴了这位dalao的思路

看上去这题没人交题解,那我就来一发吧(弥天大雾

传送门

题意

题目已经很简洁力

分析一下

一开始就不满足要求的话是肯定要交换的,我们用大根堆 A,B 分别存储一开始就不满足要求的 \(a_i,b_i\)

而一开始就满足要求的 \(a_i,b_i\),我们用一个大根堆 q(这里要按照 \(a_i\) 来排)存起来,然后进行交换

考虑如何交换

对于一开始就不满足的人,其内部可以自己解决的话,一定会自己解决(贪心的想),即对于当前的 \(top_B\) 如果 A 内最大的 \(a_i\)(即 \(top_A\) )大于它,我们就可以直接把这两个人交换,即把当前这个人的 \(a_i,b_i\) 变成 \(top_A,top_B\) 即可

如果无法内部解决,说明我们需要原本合法的人的帮助,我们肯定是要用 \(a_i\) 更大的人才能帮助他的,所以我们之前使用大根堆存合法的人。贪心的想,我们在保证 \(a_i\) 大于 \(top_B\) 的同时,也要使 \(b_i\) 尽量小,因此我们可以使用小根堆 not_B 将所有满足 \(a_i\) 大于 \(top_B\) 的人的 \(b_i\) 存下来,选一个 \(b_i\) 最小的进行交换即可(如果此时 not_B 为空,说明没人能帮 \(top_B\),即无解)

AC code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#include<cstdlib>
#include<algorithm>
#define pii pair<int,int>

using namespace std;

const int maxn=3e5+5;

inline int read()
{
   int w=0,f=1;
   char ch=getchar();
   while(ch<'0' || ch>'9')
   {
   	if(ch=='-') f=-1;
   	ch=getchar();
   }
   while(ch>='0' && ch<='9')
   {
   	w=(w<<3)+(w<<1)+(ch^48);
   	ch=getchar();
   }
   return w*f;
}

int n,x,y,ans;
priority_queue<pii,vector<pii>,less<pii> > q;
priority_queue<int,vector<int>,less<int> > A,B; 
priority_queue<int,vector<int>,greater<int> > not_B;

int main()
{
   n=read();

   for(int i=1;i<=n;i++)
   {
   	x=read(),y=read();
   	if(x<y) A.push(x),B.push(y);
   	else q.push(make_pair(x,y)),ans++;
   }
   
   while(!B.empty())
   {
   	int k=B.top();B.pop();
   	
   	if(!A.empty() && A.top()>=k)
   	{
   		A.pop();continue;
   	}
   	
   	while(!q.empty() && q.top().first>=k)
   	{
   		not_B.push(q.top().second);q.pop();
   	}
   	
   	if(not_B.empty()) cout<<-1,exit(0);
   	
   	ans--,B.push(not_B.top()),not_B.pop();
   }
   
   cout<<ans;
   
   return 0;
}

标签:ch,报告,int,top,while,解题,Examination,include
From: https://www.cnblogs.com/SitoASK/p/16860164.html

相关文章

  • Vulnhub Vulnerable Docker Containment靶机解题过程(部分,未完成)
    VulnerableDockerContainment识别目标主机IP地址─(kali㉿kali)-[~/Vulnhub/Vulnerable_docker]└─$sudonetdiscover-ieth1Currentlyscanning:192.168.60.0/1......
  • Vulnhub Snakeoil靶机解题(过程非常麻烦,需要一直用burpsuite)
    Snakeoil识别目标主机IP地址─(kali㉿kali)-[~/Vulnhub/SnakeOil]└─$sudonetdiscover-iethCurrentlyscanning:192.168.122.0/16|ScreenView:UniqueHo......
  • 贯彻二十大报告精神,政企如何提前布局信创国产化移动数字化平台?
    近期,党的二十大报告再定增强国家安全主基调,重申发展信创产业,实现关键领域信息技术自主可控的重要性。10月28日,国务院办公厅印发《全国一体化政务大数据体系建设指南》,目标在......
  • HID报告描述符
    /***************************************************************************************函数名称:HID报告描述符****函数作用:****函数描述:**************************......
  • 11.3 解题报告
    T1用时:\(1\)h期望得分:\(100\)pts实际得分:\(40\)pts这题是一个比较简单的贪心,枚举根,bfs求出根到每个点的最小距离然后取\(\min\)即可,当然由于点数极小,也可以直接枚......
  • 报告描述符(Report Descriptor)
    USBHID设备时通过报告report来传送数据的,报告有输入报告和输出报告;报告描述符是用来描述一个报告的结构以及该报告里面的数据是用来干什么的;一个报告描述符可以描述多个......
  • 报告分享|2022年中国生命科学与医疗行业智信未来调研结果
    在受到严格监管的生命科学与医疗行业,外部利益相关者的重要性排在前列,最重要的利益相关者是政府部门和监管机构 医疗专业人员对于产品采用和使用的成功至关重要,同样排名较高......
  • 报告分享|2022数字化运营白皮书
    “放眼世界,我们面对的是百年未有之大变局”。在当今的世界中,百年变局与疫情交织,全球经济受到大冲击,截至目前尚未从余波中脱身。物联网、云计算、人工智能、大数据、5G等技术......
  • 报告分享|2022中国游戏电竞圈层营销白皮书
    随着电竞入亚、各地电竞政策相继颁布等背景的推助,电子竞技被推上了新的社会高度。2021年EDG夺冠,电竞赛事从圈内小狂欢发展成为普众大趴体,电竞关注度空前高涨,不仅深受Z世代群......
  • Python第十章实验报告
    一、实验题目Python第十章实例和实战作业二、实验目的和要求1.熟悉Pycharm的运行环境2.学习并掌握Python文件及目录操作三、主要仪器设备联想小新air15硬件:AMDR75......