牛客 wyh的物品

2021-10-07 00:05:44 字數 2930 閱讀 7552

題解:一道經典的實數二分題。

二分答案,假設取這k個物品的下標為i1,

i2,.

....

,iki1

​,i2

​,..

...,

ik​,二分得到乙個答案x。

a為重量,b為價值,實際的結果為:∑j=

1kbi

jaij

\sum_^k \frac}}

∑j=1k​

aij​

​bij

​​​。

如果∑ j=

1kbi

jaij

≥x

\sum_^k \frac}}≥x

∑j=1k​

aij​

​bij

​​​≥

x,那麼結果可能有點小,修改二分左邊界l=mid。

如果∑ j=

1kbi

jaij

<

x\sum_^k \frac}}∑j

=1k​

aij​

​bij

​​​<

x,那麼結果是大的,修改右邊界r=mid。

問題來了,如果選取這k個物品,其實可以將上式變形,以∑j=

1kbi

jaij

≥x

\sum_^k \frac}}≥x

∑j=1k​

aij​

​bij

​​​≥

x為例。

∑ j=

1kbi

jaij

≥x

\sum_^k \frac}}≥x

∑j=1k​

aij​

​bij

​​​≥

x ⇒ ∑j=

1k(b

ij−x

×aij

)≥

0\sum_^k -x\times})}≥0

∑j=1k​

(bij

​​−x

×aij

​​)≥

0很明顯我們只需將(bi

j−x×

aij)

-x\times})}

(bij​​

−x×a

ij​​

)排序取前k個即可

如果∑ j=

1k(b

ij−x

×aij

)≥

0\sum_^k -x\times})}≥0

∑j=1k​

(bij

​​−x

×aij

​​)≥

0,則代表∑j=

1kbi

jaij

≥x

\sum_^k \frac}}≥x

∑j=1k​

aij​

​bij

​​​≥

x,結果可能有點小,修改左邊界l=mid。

如果∑ j=

1k(b

ij−x

×aij

)<

0\sum_^k -x\times})}<0

∑j=1k​

(bij

​​−x

×aij

​​)<

0,則代表∑j=

1kbi

jaij

<

x\sum_^k \frac}}∑j

=1k​

aij​

​bij

​​​<

x,結果結果是大的,那麼修改右邊界r=mid。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

//extern "c"

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef

long

double ld;

#define fi first

#define se second

#define pb push_back

#define pii pair

const

double pi=

acos(-

1.0)

;const

double eps=

1e-6

;const ll mod=

1e9+7;

const

int inf=

0x3f3f3f3f

;const

int maxn=

100005

;const

int maxm=

100+10;

#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

struct node

node[maxn]

;double p[maxn]

;int n,k;

bool

check

(double x)

intmain()

printf

("%.2lf\n"

,l);

}}

wyh天鵝 牛客網

題目描述 你們wyh學長小時候住在河邊,因為周圍的生態環境非常好,所以經常會有天鵝浮在湖面上,每只天鵝都長得不一樣,它們偶爾排成一排,偶爾分散開,偶爾也會去其他河畔,wyh學長為了統計它們的個數,編了乙個程式賦予它們乙個 萌 值,但是這些天鵝很不聽話,一會兒會從別的地方游過來一兩隻,一會兒又會在統計...

牛客 拿物品 貪心

題目大意 給出 n 個物品,每個物品有兩個屬性代表價值,有兩個玩家依次輪流拿物品,玩家一拿到物品後的貢獻為屬性一的累加,同理玩家二拿到物品後的貢獻為屬性二的累加,現在問兩人都希望在拿完物品後的貢獻比對方盡可能多,問兩人會如何選擇 題目分析 現在看來是一道很簡單的貪心問題,但是在比賽的時候卻沒有反應過...

wyh的物品 (二分, 01分數規劃)

wyh學長現在手裡有n個物品,這n個物品的重量和價值都告訴你,然後現在讓你從中選取k個,問你在所有可能選取的方案中,最大的單位價值為多少 單位價值為選取的k個物品的總價值和總重量的比值 輸入第一行乙個整數t 1 t 10 接下來有t組測試資料,對於每組測試資料,第一行輸入兩個數n和k 1 k n 1...