社区讨论
60分求助 :(
P2329[SCOI2005] 栅栏参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lzm2phrt
- 此快照首次捕获于
- 2024/08/09 10:13 2 年前
- 此快照最后确认于
- 2024/08/09 11:10 2 年前
CPP
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
const int N = 1e3+5;
int n,m;
int a[N],b[N];
int ans = INT_MIN;
bool cmp(int x,int y)
{
return x>y;
}
bool check(int x)
{
int c[N];
for(int i=1;i<=m;i++) c[i] = a[i];
int cnt = 0;
int now = 0;
for(int i=1;i<=m;i++){
for(int j=now;j<=n;j++){
if(c[i]-b[j]>0){
c[i]-=b[i];
cnt++;now++;
continue;
}else{
break;
}
}
}
return cnt>=x;
}
int main()
{
cin >> m;
for(int i=1;i<=m;i++) cin >> a[i];
cin >> n;
for(int i=1;i<=n;i++) cin >> b[i];
sort(a+1,a+m+1,cmp);sort(b+1,b+n+1);
// cout << check(7);
// for(int i=1;i<=m;i++) cout << a[i] << ' ';
// cout << endl;
// for(int i=1;i<=n;i++) cout << b[i] << ' ';
int l = 0,r = n;
while(l<=r){
int mid = l+r>>1;
if(check(mid)){
l = mid+1;
ans = max(ans,mid);
}else r = mid-1;
}
cout << ans;
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...