科学技術情報の第十プログラミングコンテスト(シーズンを再現)の北京大学H

H アンディとショッピング

トピックへのリンク:https://ac.nowcoder.com/acm/contest/940/H

タイトル説明

アンディは、貨物のn個を買うために市場に行き、各パッケージの価格です 、私 各顧客に割引リストを貨物のN個を買うために、顧客を引き付けるために企業は、少しはリスト上のフラクショナルN bの1であり 、jは 割引を表します。Bそれぞれの割引について J 、ユーザーがBに商品の価格を作るためにそれを使用するかを決定するため のJ *のA I 、一度だけ使用することができます。
アンディは、あなたは彼が彼の最小限のコストを数える助けたいです。


説明を入力します。

最初の正の整数t、グループの試料の代表的な数を入力します。(1≤t≤10)

各サンプルについて:

最初の行、正の整数n(1≤n≤1000)を入力します。

2行目は、N個の整数、i番目のリスト項目のI [i]の代表最初の整数を含んでいます。(1≤a[i]が≤1e9)

第3段目は、小さなN bの数[i]は、記載されているように意味のタイトルを含んでいます。(0≤b[I]≤1)

出力説明:

各サンプルについて、実数の、小数点以下3桁の出力は、最小のコストを表します。
例1

エントリー

1 
5 
1 2 3 4 5 
0.1 0.2 0.3 0.4 0.5

輸出

3.500

アイデア:

元の価格が蓄積し、そのソート後の乗算と乗算ビッグビッグ割引

 

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
typedefの長い 長いLL。
const  int型 MAXN = 1005 ;
構造体ノード{
     INT ダブル浙江; 
}ノード[ 1005 ]。
INT のmain()
{ 
 
    int型のT。
    cinを >> トン。
    一方、(t-- 
    { 
        int型N。
        cinを >> N;
        INT X [MAXN]。
        二重Y [MAXN]。
        以下のためのint型 i = 0 ; iがn <; iは++ 
            CIN >> X [i]は、
        ソート(X、X + N)。
        以下のためにint型 i = 0 ; iがN <I ++は
            ノード[i]は.A =のX [i]は、
        以下のためにint型 i = 0 ; iがn <; iは++ 
            CIN >> のy [i]は、
        ソート(Y、Y + nは、大きい< ダブル > ());
        以下のためにint型 i = 0 ; iがn <; I ++の
            ノード[i]は.zhe =Y [i]は、
        二重の総和= 0.0 ;
        以下のためにint型 i = 0 ; iがn <I ++の
           合計 + =ノード[I] .A * ノード[I] .zhe。
        printf(" %.3fの\ nを" 、合計)。
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/Vampire6/p/11131713.html