20240531训练二分题

二分

题目描述

有一个由 n n n 个整数组成的序列,从左到右编号为 1 1 1 到 n n n 。这些整数有两种颜色,分别是 0 0 0 和 1 1 1 ,每个整数正好有一种颜色。这些整数按照从 1 1 1 到 n n n 的编号顺序进入多集合 S 1 S_1 S1 。

每当一个新的整数 x x x 进入 S 1 S_1 S1 时,你必须在 S 1 S_1 S1 中选择一个颜色与 x x x 不同的整数 y y y 与 x x x 发生反应,使得 x x x 和 y y y 消失,反应产物 x + y x+y x+y 插入另一个集合 S 2 S_2 S2 。如果不存在这样的 y y y ,则不会发生反应,只有 x x x 被插入 S 1 S_1 S1 。

给定整数序列和每个整数的颜色,求处理最后一个元素后 S 2 S_2 S2 中最小元素的最大可能值。

输入

第一行包含一个整数 n n n ( 2 ≤ n ≤ 1 0 5 2\le n\le 10^5 2≤n≤105 ),代表整数个数。

第二行包含 n n n 个正整数 a 1 , a 2 , ... , a n a_1,a_2,\ldots,a_n a1,a2,...,an ( 1 ≤ a i ≤ 1 0 8 1\le a_i\le 10^8 1≤ai≤108 ),代表整数序列。

第三行包含 n n n 个整数 c 1 , c 2 , ... , c n c_1,c_2,\ldots,c_n c1,c2,...,cn ( c i ∈ { 0 , 1 } c_i\in \{0,1\} ci∈{0,1} ),其中 c i c_i ci 代表 i i i 个整数的颜色。

可以保证至少有一个 i i i 是 c i = 0 c_i=0 ci=0 ,至少有一个 j j j 是 c j = 1 c_j=1 cj=1 。

输出

输出一个整数,代表答案。

样例

cpp 复制代码
input1:
4
1 3 2 4
0 0 1 1
inout1:
5

input2:
6
1 3 4 2 5 6
0 1 0 1 0 1
inout2:
4

input3:
7
3 3 4 4 5 3 1
0 0 1 1 1 0 0
inout3:
7

AC代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,a[N],c[N];
bool check(int mid)
{
	multiset<int>se;//
	int col=-1;
	for(int i=1;i<=n;i++)
	{
		if(se.size()&&c[i]!=col)
		{
			int f=mid-a[i];
			auto l=se.lower_bound(f);
			if(l!=se.end())	se.erase(l);
			else	return 0;
		}
		else
		{
			se.insert(a[i]);
			col=c[i];
		}
	}
	return 1;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)	cin>>a[i];
	for(int i=1;i<=n;i++)	cin>>c[i];
	int l=0,r=1e9;
	while(l<r)
	{
		int mid=(l+r+1)/2;
		if(check(mid))	l=mid;
		else	r=mid-1;
	}
	cout<<l;
	return 0;
}
相关推荐
搬砖者(视觉算法工程师)26 分钟前
计算机视觉与计算摄影测量学第三讲图像直方图:理论、统计特性与点运算变换
人工智能·算法·计算机视觉
Yingjun Mo31 分钟前
3. Meta-Harness:模型基座外壳的端到端优化
人工智能·算法
Cthy_hy33 分钟前
并查集(Disjoint Set Union):巧判「连通聚类关系」的极简利器
数据结构·算法
Shan120535 分钟前
C++中函数对象之重载 operator()
开发语言·c++·算法
逻辑君35 分钟前
物理生物学研究报告【20260007】
人工智能·算法
阿维的博客日记40 分钟前
简单说一下ArrayList的add机制,适合应试者表达的
算法·arraylist
阿Y加油吧1 小时前
两道位运算 / 摩尔投票经典题复盘:只出现一次的数字 & 多数元素
数据结构·算法·leetcode
Evand J1 小时前
【课题推荐】三模型IMM交互式多模型滤波算法,匀速/左转/右转目标跟踪,附MATLAB代码测试结果
算法·matlab·目标跟踪·无人机·imm·多模型
05候补工程师1 小时前
【408狂飙·数据结构】核心考点深度复盘:数组地址计算、特殊矩阵压缩存储与树的五大性质解题直觉
数据结构·笔记·线性代数·考研·算法·矩阵
青山师2 小时前
HashMap深度解析:哈希冲突、扩容机制与线程安全
算法·安全·哈希算法·java面试·hashmap源码