hdu2570(貪欲)

http://acm.hdu.edu.cn/showproblem.php?pid=2570

また、質問がああ慎重に検討しました。

ContractedBlock.gif ExpandedBlockStart.gif コードの表示
 
    
#include のiostream
の#include
アルゴリズム 使用して名前空間はstdを、INT のmain(){ int型I、T。int型N、V、W。ダブル[ 110 ]。cinを>> トン。一方、(T - { CIN >> N >> V >> W。以下のための(I = 0 ; iは< N; iは++ )CIN >> [I]。ソート(+のN)。ダブル












P = 0.0
int型 のk = 0

以下のための (I = 0 ; iは < 私は、N ++
{
もし 、((Pの * iは + [I]) / (I + 1 <= W) // (SUM * iは、Vの* + [I] * V)/((I + 1)* V) { P = (Pの* iは+ [I])/ ((I + 1 ))。} 他にブレーク} のprintf(" %D%.2lf \ nは





私は、 * P、Vの / 100 );
}
戻り 0 ; }

少数がV、W n回、悲劇を取るので、以下の方法が、始まりです!

ContractedBlock.gif ExpandedBlockStart.gif コードの表示
 
    
#include のiostream
の#include
アルゴリズム 使用して名前空間はstdを、INT のmain(){ int型のT、I、J。int型N、V、W。INT [ 110 ]。cinを>> トン。一方、(T - { CIN >> N >> V >> W。以下のための(I = 0 ; iは< N; iは++ )CIN >> [I]。ソート(+のN)。ダブル












SUM = 0 、S = 0 ;

__int64 Kが
= 0 ;
int型 T = 1 ;
のための (I = 0 、I < N - 、Iは ++
{
S
+ = A [I] * V; // ここでなぜなら最初の数Vを取り、n回の結果が間違っていたが、ちょうどテストケースには影響しません、悲劇ああ! IF (S / (V * (I + 1 ))<= W){ SUM = S / (V族* (Iは、+ 1。 ))。



K
++ ;
}
他に ブレーク} のprintf(" %I64d%.2lf \ n " 、k個*のV、和/ 100 )。} 戻り0 }






ます。https://www.cnblogs.com/FCWORLD/archive/2011/05/04/2036083.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34061555/article/details/94156122