这道题 一看就知道是一个贪心 如果我想让船尽量少 就应该让船装的东西尽量多
所以 使用双指针 排序后 如果front指针+rear指针<=m 就直接船+1 否则 rear前移 船+1
因为 如果我当前最小重量的人都不满足 rear指针 <=m 那么我不可找出更小的满足条件
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll w[105000];
int main(){
ll n,m;
cin >> n >> m;
for(int i=0;i<n;i++) cin >> w[i];
sort(w,w+n);
int i=0;
int j=n-1;
ll ans = 0;
while(i!=j){
if(w[i]+w[j]<=m){
ans++;
i++;
j--;
}
else{
j--;
ans++;
}
}
if(i==j) cout << ans+1 << endl;
else cout << ans << endl;
}
这道题 对我来讲比较迷 因为我原来的判断条件
while(i!=j)
报错RE
改成
while(i<=j)
正确
但是我觉得应该是TLE