接水問題 二

2021-08-25 14:37:40 字數 965 閱讀 2466

n個人一起排隊接水,第i個人的重要性是a[i],需要b[i]的時間來接水。

1 <= n <= 100000 

0 <= b[i] <= 1000

0 <= a[i] <= 1000

同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。

完成接水的人會立刻消失,不會繼續等待。

你可以決定所有人接水的順序,並希望最小化所有人等待時間乘以自己的重要性a[i]的總和。

input

第一行乙個整數n。

以下n行,每行兩個整數a[i]和b[i]。

output

一行乙個整數表示答案。
input示例

4

1 42 3

3 24 1

output示例

35
設第乙個人重要性a[x], 時間b[x], 同理第二個人a[y], b[y]

那麼如果第乙個人在前,則b[x] * a[x] + a[y] * (b[x] + b[y])

那麼如果第二個人在前,則b[y] * a[y] + a[x] * (b[x] + b[y])

化簡之後可得a[y] * b[x] 與 a[x] * b[y] 

#include#define maxn 100005

using namespace std;

typedef long long ll;

paira[maxn];

bool cmp(paira,pairb)

sort(a+1,a+n+1,cmp);

ll ans=0,time=0;

for(int i=1;i<=n;i++)

cout

}

接水問題 題解

學校裡有乙個水房,水房裡一共裝有 m mm 個龍頭可供同學們開啟水,每個龍頭每秒鐘的供水量相等,均為 111。現在有 n nn 名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從 1 11 到 n nn 編號,i ii 號同學的接水量為 w iw i wi 接水開始時,1 11 到 ...

1233 接水問題

題目描述 學校裡有乙個水房,水房裡一共裝有m個龍頭可供同學們開啟水,每個龍頭每秒鐘的供水量相等,均為1。現在有n名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從1到n編號,i號同學的接水量為wi。接水開始時,1到m號同學各佔乙個水龍頭,並同時開啟水龍頭接水。當其中某名同學j完成其接...

模擬 接水問題

問題描述 學校裡有乙個水房,水房裡一共裝有m 個龍頭可供同學們開啟水,每個龍頭每秒鐘的 供水量相等,均為1。現在有n 名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從1 到n 編號,i 號同學的接水量為wi。接水開始時,1 到m 號同學各佔乙個水龍頭,並同時打 開水龍頭接水。當其中...