51nod1432【贪心】
对于每个数我找一个和他相加最接近独木舟,然后ans+=1;
想复杂了,直接两端来就好了。
然后两个相加如果<=m那么就让它们在一起,不是的话就让大的一艘船,然后继续搞(贪心)
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF=-0x3f3f3f3f;
const int N=1e4+10;
int a[N];
int n,m;
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
int s,t;
s=0;t=n-1;
int ans=0;
while(s<=t)
{
if(a[s]+a[t]>m)
t--;
else
{
s++;
t--;
}
ans++;
}
printf("%d\n",ans);
return 0;
}