该用户太懒,这里啥也没写 (´・ω・`)☝🤓
二分查找:
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int main(){
int n,a[N],b,m;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
cin>>m;
for(int i=1;i<=m;i++){
cin>>b;
int r=n+1,l=0;
while(r-l>1){
int mid=(r+l)/2;
if(a[mid]>=b){
r=mid;
} else {
l=mid;
}
}
if(r<=n&&a[r]==b){
cout<<"YES"<<endl;
} else {
cout<<"NO"<<endl;
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,a[N],m;
bool check(int x){
int cnt=0;
for(int i=1;i<=n;cnt++){
int sum=0;
if(a[i>x])return false;
while(i<=n&&sum+a[i]<=x){
sum+a[i];
i++;
}
}
return cnt<=m;
}
int search(it l,int r){
while(r-l>1){
int mid=(l+r)/2;
if(check(mid))
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cout<<search(-1,1000000000);
return 0;
}