AT2346 [ARC070B] No Need
独一无二的贪心做法。
思路
不难想象,假如包含
因为以我们贪心的思路,我们想要凑出一个值尽可能接近于
若此时的和加上
排序复杂度
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define rint register int
int const N=5e3+10;
int a[N];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,k;cin>>n>>k;
for (rint i=1;i<=n;++i) cin>>a[i];
sort(a+1,a+n+1);
if (n==1){
if (a[1]>=k) cout<<0<<'\n';
else cout<<1<<'\n';
return 0;
}//特判,不然会 WA 四个点
int ans=0;
for (rint i=1;i<=n;++i){
int sum=0,tag=1;
for (rint j=n;j>=1;--j){
if (j==i) continue;
sum+=a[j];
if (sum>=k) sum-=a[j];
if (sum+a[i]>=k){
tag=0;
break;
}
}
ans+=tag;
}
cout<<ans<<'\n';
return 0;
}