n個人一起排隊接水,第i個人的重要性是a[i],需要b[i]的時間來接水。設第乙個人重要性a[x], 時間b[x], 同理第二個人a[y], b[y]1 <= n <= 100000
0 <= b[i] <= 1000
0 <= a[i] <= 1000
同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。
完成接水的人會立刻消失,不會繼續等待。
你可以決定所有人接水的順序,並希望最小化所有人等待時間乘以自己的重要性a[i]的總和。
input
output第一行乙個整數n。
以下n行,每行兩個整數a[i]和b[i]。
input示例一行乙個整數表示答案。
output示例4
1 42 3
3 24 1
35
那麼如果第乙個人在前,則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 號同學各佔乙個水龍頭,並同時打 開水龍頭接水。當其中...