E - 嗯? 51Nod - 1432(二分)
阿新 • • 發佈:2018-11-08
n個人,已知每個人體重。獨木舟承重固定,每隻獨木舟最多坐兩個人,可以坐一個人或者兩個人。顯然要求總重量不超過獨木舟承重,假設每個人體重也不超過獨木舟承重,問最少需要幾隻獨木舟?
Input
第一行包含兩個正整數n (0 接下來n行,每行一個正整數,表示每個人的體重。體重不超過1000000000,並且每個人的體重不超過m。
Output
一行一個整數表示最少需要的獨木舟數。
Sample Input
3 6
1
2
3
Sample Output
2
對於這個題目的印象還是比較深刻的,在一次訓練的時候也是用的這種方法,然後就wa了,這裡最多就是做兩個人,先排一下序,然後再用二分查詢。這個問題就可以解決了。
程式碼如下:
#include<iostream> #include<algorithm> #define ll long long using namespace std; int a[10101]; int main() { int n,m; cin>>n>>m; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); int l=0; int r=n-1; int sum=0; while(l<r) { if(a[l]+a[r]<=m) { l++; r--; sum++; } else { sum++; r--; } if(l==r) sum++; } cout<<sum<<endl; return 0; }
努力加油a啊,(o)/~