作业介绍

链接

https://www.luogu.com.cn/training/635296

#include<bits/stdc++.h>
using namespace std;

int main(){
	//求某一个范围的最大值
	while(l<=r){
		int mid = l + r >> 1;
		if(check(mid)) r = mid - 1;
		else l = mid + 1;
	}
	cout << r;
	
	//求某一个范围的最小值
		while(l<=r){
			int mid = l + r >> 1;
			if(check(mid)) l = mid + 1;
			else r = mid - 1;
		}
		cout << l;
	return 0;
}

<!-- 露营计划 -->
#include<bits/stdc++.h>   //万能头
using namespace std;   //命名空间

int n, m, k;
int a[100005];  //a[i]是第i个人的钱
int b[100005];  //b[j]是第j个房间的价格

bool check(int x){
	//如果住不下x个人,返回true
	int money = k;
	for(int j=1, i=n-x+1; j<=x; j++, i++){
		if(a[i] < b[j]) money -= (b[j] - a[i]);
		if(money < 0) return 1;
	}
	return 0;
}
int main(){    //主函数
	cin >> n >> m >> k;
	for(int i=1; i<=n; i++) cin >> a[i];
	sort(a+1, a+n+1);
	for(int j=1; j<=m; j++) cin >> b[j];
	sort(b+1, b+m+1);
	
	int l = 1, r = n;
	while(l <= r){
		int mid = (l + r) >> 1;
		if(check(mid)) r = mid - 1;
		else l = mid + 1;
	}
	cout << r;
	return 0;   //返回
}
状态
已结束
题目
4
开始时间
2025-3-1 0:00
截止时间
2025-3-8 23:59
可延期
24 小时