例2.11 FatMouseの貿易
問題解決のためのアイデア
貪欲な戦略。必ずアイテムが購入されるまでのコスト(すなわち、価格重量比)アップアイテムに残っているアイテムを購入したり、お金がなくなりました。アイテムが購入された場合、我々は残りの項目に費用対効果の高いアイテムを探し続け
ACコード
#include <cstdioを> する#include <CStringの> する#include <iostreamの> する#include <アルゴリズム> 使用して 名前空間STDを、 構造体シング { ダブルJ。 ダブルF; ダブル S; // 性价比 } T [ 1000年]。 BOOL CMP(シング、シングB) { リターンとして> BS。 } int型のmain() { ダブルM。 int型のn; 一方、(scanf関数(" %のLF%dの"、&M、&N)!=EOF) { 場合(M == - 1 && N == - 1)ブレーク。 以下のために(int型 i = 0 ; iがn <I ++の) { scanf関数(" %のLFの%のLF "、&T [i]は.J&Tを[I] .F)。 T [i]は.Sの = tの[I] .J / T [i]は.F。 } ソート(T、T + N、CMP)。 INTの ID = 0 。 ダブルのANS = 0 ; 一方、(M> 0 && ID < N) { 場合(M> T [ID] .F) { ANS + = T [ID] .J。 M - = T [ID] .F。 } 他 { ANS + = T [ID] .J * M / T [ID] .F。 M = 0 。 } ID ++ 。 } のprintf(" %.3lfする\ n " 、ANS)。 } // システム( "休止")。 リターン 0 ; }
例2.12 ACなしでこの夏
問題解決のためのアイデア
xの選択(X> = 1)プログラムでは、番組を見て前にX-1の後に選択する必要があります終了し、あなたは、これは私たちが貪欲戦略探しているもので、最初のプログラムの終了時に他のプログラムをすべて見ることができます。プログラムが選択されるたびに、この貪欲な戦略の一定の使用は、我々は、最適なソリューションを解決終えることができます。
ACコード
#include <cstdioを> する#include <CStringの> する#include <iostreamの> する#include <アルゴリズム> 使用して 名前空間STDを、 構造体シング { INT BEG。 int型エンド。 } T [ 100 ]。 ブールCMP(シング、シングB) { 戻り a.end < b.end。 } int型のmain() { int型N; 一方、(scanf関数(" %のD "、&N)!= EOF) { 場合(N == 0)休憩; 以下のために(int型私= 0 ; iがN <; I ++)はscanf関数(" %D%D "、&T [i]は.beg、&T [i]の.END)。 ソート(T、T + N、CMP)。 int型 CUR = 0、ANS = 0 ; // 当前时间和节目总数 ため(int型 i = 0 ; iがn <; iは++ ) { 場合(CUR <= T [i]が.beg) { CUR = T [i]は.END。 ANS ++ ; } } のprintf(" %Dを\ n " 、ANS)。 } // システム( "休止")。 リターン 0 ; }