【51Nod - 1432】独木舟 (贪心,思维,好题)
生活随笔
收集整理的這篇文章主要介紹了
【51Nod - 1432】独木舟 (贪心,思维,好题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題干:
n個人,已知每個人體重。獨木舟承重固定,每只獨木舟最多坐兩個人,可以坐一個人或者兩個人。顯然要求總重量不超過獨木舟承重,假設每個人體重也不超過獨木舟承重,問最少需要幾只獨木舟??
Input
第一行包含兩個正整數n (0?接下來n行,每行一個正整數,表示每個人的體重。體重不超過1000000000,并且每個人的體重不超過m。
Output
一行一個整數表示最少需要的獨木舟數。
Sample Input
3 6 1 2 3Sample Output
2?
解題報告:
? ?排序后貪心就好了。。貪心正確性不難證明在此不作過多說明。
AC代碼:
#include<bits/stdc++.h> #define LL long longusing namespace std;LL w[10000+5]; int main() {LL n,m;scanf("%lld%lld",&n,&m);LL i;for(LL i = 0; i<n; ++i) scanf("%lld",&w[i]);sort(w,w+n);//按照重量從小到大排序LL sum=0;LL l = 0,r = n-1;while(l<=r) {if(w[l] + w[r] <= m) {l++;r--;sum++;}else {r--;sum++;}}printf("%lld\n",sum);return 0; }還有的人用vector寫的,排序不變。。。每次讀取front和back,然后做erase開頭 和 pop_back的操作。。其實這個復雜度好像要高一些?
總結
以上是生活随笔為你收集整理的【51Nod - 1432】独木舟 (贪心,思维,好题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: scanserver.exe - sca
- 下一篇: 26亿一台!ASML全新光刻机准备中:I