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 。 }