POJ 1700

POJ 1700

題意

n個(gè)人要過(guò)河,一次只能同時(shí)兩個(gè)人過(guò)河,兩個(gè)人過(guò)河的時(shí)間取決于慢的一個(gè)。求最快的過(guò)河的時(shí)間

思路

先對(duì)過(guò)河速度進(jìn)行升序排序。

然后分兩種情況:

  1. 最快的和最慢的先過(guò)去,然后由最快的一個(gè)人劃回來(lái),再由最快的次慢的,再由最快的劃回來(lái).
  2. 最快的和次快的先劃過(guò)去,然后由最快的先劃回來(lái),再由最慢的和次慢的過(guò)去,最后由次快的劃回來(lái)。
    通過(guò)兩種情況把最慢的和次慢的都送過(guò)河里,最快的和次快的都沒過(guò)河。然后開始下一次迭代。

每一次選擇最優(yōu)解,即貪心算法。

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int m,n,t[1001],i,sum;
    cin>>m;
    while(m--){
        cin>>n;
        sum = 0;
        for(i=0;i<n;i++){
            cin>>t[i];
        }
        sort(t,t+n);
        for(i = n-1;i>2;i -= 2){
            if(t[0]+2*t[1]+t[i]>2*t[0]+t[i-1]+t[i])
                sum += 2 * t[0] + t[i-1]+t[i];
            else
                sum +=t[0]+2*t[1]+t[i];
            if(i == 2) sum += t[0]+t[1]+t[2];
            else if(i == 1) sum +=t[1];
            else sum += t[0];
            cout<<sum<<endl;
        }
    }
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • POJ 1700 題意 n個(gè)人要過(guò)河,一次只能同時(shí)兩個(gè)人過(guò)河,兩個(gè)人過(guò)河的時(shí)間取決于慢的一個(gè)。求最快的過(guò)河的時(shí)間 ...
    vanadia閱讀 413評(píng)論 0 0
  • 關(guān)注全球媽媽育兒指南, 每天分享育兒干貨,你不關(guān)注一下嗎? 冬天怎么保護(hù)寶寶的皮膚? 冬天的天氣會(huì)使皮膚變得脆弱。...
    全球媽媽育兒指南閱讀 340評(píng)論 0 0
  • 秋高氣爽100天~
    沃雷塔爾閱讀 106評(píng)論 0 0
  • 夜里有些靜悄悄 空氣有些寧?kù)o 突然的不安 莫名的恐慌 伸手想抓住些什么 卻在空氣里落了個(gè)空 只聽見心跳的聲音 緊張...
    櫻桃城城閱讀 193評(píng)論 0 0

友情鏈接更多精彩內(nèi)容