首页 > 其他分享 >[ABC312C] Invisible Hand

[ABC312C] Invisible Hand

时间:2023-12-18 22:26:17浏览次数:21  
标签:sort cout int Hand leq Invisible ABC312C now

其他题解都是二分,这里介绍一种 \(O(n+m)\) 的线性写法。

我们尝试考虑在 \(x\) 为和值时会出现答案?

很显然,对于任意 \(1 \leq i \leq n\) 和 \(1 \leq j \leq m\),\(x\) 只可能等于 \(a_i\) 或 \(a_i+1\) 或 \(b_i\) 或 \(b_i+1\)。即 \(x\) 为这 \(2 \times (n+m)\) 种情况中的一个。

如何证明呢?可以发现,如果我们想让卖家多一人,我们就将 \(x\) 调整为下一个 \(a_i\);而想让买家少一人,我们就将 \(x\) 调整为下一个 \(b_j+1\)。而将 \(x\) 调整到其他数值,如果可以成立,则必有比它小的。

综上,我们只需依次枚举 \(x\),在判断这种情况下合不合法即可。

代码如下。

#include <bits/stdc++.h>
using namespace std;
#define int long long
// head
const int N=2e5+5;
int a[N],b[N];
vector<int> all;
signed main() 
{
	cin.tie(nullptr);
	ios::sync_with_stdio(false);
	
	int n,m;cin>>n>>m;
	for(int i=0;i<n;i++) {cin>>a[i];all.push_back(a[i]);}
	for(int j=0;j<m;j++) {cin>>b[j];all.push_back(b[j]);}
	sort(all.begin(),all.end());
	sort(a,a+n);
	sort(b,b+m);
	int sum=0,now=0;
	int i=0,j=0;
	while(now<=n+m)
	{
		sum=V[now]; //枚举x
		while(i!=n&&a[i]<=sum)i++;
		while(j!=m&&b[j]<sum)j++;
		if(i>=m-j){ //是否成立
			cout<<sum<<endl;
			return 0;
		}
		sum=V[now]+1; //枚举 x
		while(i!=n&&a[i]<=sum)i++;
		while(j!=m&&b[j]<sum)j++;
		if(i>=m-j){ //是否成立
			cout<<sum<<endl;
			return 0;
		}
		now++;
	}
}

标签:sort,cout,int,Hand,leq,Invisible,ABC312C,now
From: https://www.cnblogs.com/ziyistudy/p/17912503.html

相关文章

  • MATLAB 函数句柄Function handle的用法
    函数句柄的作用是可以把函数句柄直接设置为参数然后执行  函数句柄(Functionhandle)是MATLAB的一种数据类型。引入函数句柄是为了使feval及借助于它的泛函指令工作更可靠;使“函数调用”像“变量调用”一样方便灵活;提高函数调用速度,特别在反复调用情况下更显效率;提高软件重用性,......
  • 《Java编程思想第四版》学习笔记47--关于handleEvent
    (4)增加可以被handleEvent()方法测试事件的组件到练习3中。过载handleEvent()并在文字字段中为每个组件显示特定的消息。                                                ......
  • Unhandled exception. System.IO.IOException: The configured user limit (128) on t
    现象:Unhandledexception.System.IO.IOException:Theconfigureduserlimit(128)onthenumberofinotifyinstanceshasbeenreached,ortheper-processlimitonthenumberofopenfiledescriptorshasbeenreached.atSystem.IO.FileSystemWatcher.StartRaisi......
  • 什么是 SAP ABAP 的 Draft Handling 特性
    ABAP中的Drafthandling是SAPFiori应用程序中的一个重要特性,它允许用户保存他们正在工作的实体的未完成的状态,这可以使得用户在任何时候停止工作,然后在稍后的任何时间点继续。这种方式不仅保存了实体的数据,而且也保持了用户的UI状态,例如滚动位置,焦点等。Drafthandling在......
  • ABAP Draft handling 在 SAP 现代 Fiori 应用中的重要作用
    在SAPABAP开发中,"Drafthandling"(草稿处理)是指一种处理业务对象的机制,使用户能够在事务过程中保存未提交的更改,以便随时回到之前的状态或者在适当的时候提交更改。这个机制的实现允许用户在长时间的事务中保存中间状态,而不必担心数据的不一致性或者丢失。"Drafthandling"的核心......
  • MyBatis-Plus 自定义 TypeHandler 映射JSON类型为List
    1在mysql5.7支持json类型,那么在表实体是怎么运用的在mybatis-plus中有相关的handler/***Jackson实现JSON字段类型处理器**@authorhubin*@since2019-08-25*/@Slf4j@MappedTypes({Object.class})@MappedJdbcTypes(JdbcType.VARCHAR)publicclassJackso......
  • Kernel Maintainer Handbook 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/maintainer/index.htmlKernelMaintainerHandbook这份文档是为内核维护者编写的指南的谦逊开端。这里还有很多工作要做!请随时提出(并编写)对这份指南的补充。功能和驱动程序维护者责任选择维护者不遵守规定配置Git创建提交链......
  • Mybatis Plus 自定义 TypeHandler
    在MyBatisPlus中,可以自定义TypeHandler来处理特殊的类型转换。下面是如何自定义一个TypeHandler的步骤:我们需要创建一个实现org.apache.ibatis.type.TypeHandler接口的类。这个类需要实现以下几个方法:setParameter(PreparedStatementps,inti,Tparameter,JdbcTypejdbc......
  • java的unsafe类和varhandle类
    1、如何从unsafe类获取对象privateUnsafe(){}@CallerSensitivepublicstaticUnsafegetUnsafe(){Class<?>caller=Reflection.getCallerClass();if(!VM.isSystemDomainLoader(caller.getClassLoader())){thrownewSecurityException("Unsafe&quo......
  • 从面试官角度看Handler:掌握技巧,事半功倍!
    引言在Android开发领域,Handler是一项关键技能,尤其在面试中,对Handler的深刻理解和熟练运用往往是衡量一位Android开发者水平的重要标志。本文将从面试官的角度出发,针对AndroidHandler技术展开详细的解析,深入剖析高级疑难问题,帮助读者更好地准备面试。Handler的基本概念问题:请解释Ha......