作业介绍
链接
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 小时