貪欲トピック - サンタクロースの贈り物

ギフトサンタクロースの例

お菓子を配布し、さまざまなお菓子の箱は、各ボックスは離れてバルクの任意の組み合わせに分割することができ、独自の値と各箱の重さを持っているが、唯一のお菓子のそり重量Wを保持することができ、サンタクロースは敵ああまで歩いていきますキャンディ多くの値。
入力:
1⃣️n(ボックス番号)W(重量)
2⃣️n線が各ボックスは、値および体重(整数)が与えられる
:出力
最大値(浮動小数点)

アプローチ1:
値/重みの降順、リフィルとして
O(nlogn)ソート

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<vector>
#include<string>
#define M 200000010
#define INF 0x3f3f3f3f
const double EPS = 1e-6;
using namespace std;
struct Candy{
    int v,w;
    bool operator < (const Candy &other)const{
        return double(v)/w - double(other.v)/other.w > EPS;
    }
}candies[100];
int main(){
    int n,w;
    cin >> n >> w;
    for(int i=0; i<n; i++){
        cin >> candies[i].v >> candies[i].w;
    }
    sort(candies,candies+10);
    double total_v=0,total_w=0;
    for(int i=0; i<n; i++){
        if(total_w+candies[i].w <= w){
            total_w += candies[i].w;
            total_v += candies[i].v;
        }
        else{
            total_v += candies[i].v * double(w-total_w)/candies[i].w;
            break;
        }
    }
    printf("%.2f\n",total_v);
    return 0;
}

貪欲アルゴリズムは、すべての動きを常に最適な動作を選択するための特定のインデックスは、存在を実施し、以下の、将来の衝撃が原因考慮しません。
貪欲アルゴリズムは、その正しさを証明する必要があります。
サンタクロースの質問、FCLだけお菓子を得ることができる場合は、貪欲アルゴリズムのエラー
EG
。8. 6
。5 5
5 5
スキー容量10

公開された62元の記事 ウォンの賞賛0 ビュー1746

おすすめ

転載: blog.csdn.net/jhckii/article/details/104445470
おすすめ