題目 H 小明的比賽

2021-09-22 12:17:13 字數 1484 閱讀 9148

題目描述

小明的演算法競賽水平很高,他經常參加網上的比賽。

比賽的規則是這樣的:要在規定時間內解決 n 道題,解決時間越晚失去的分數就越多。

當然如果有錯誤提交還會扣額外的分數。為了簡化題目,我們假設小明所有題目都可以一遍 ac。

小明實在是太強了,以致於他看完所有題目就都會做了。剩下的就是把它們寫出來的問題。小明掐指一算,算出了寫每道題需要的時間 ti,以及每道題每分鐘會失去的分數 ai。也就是說,如果他在 x 分鐘時完成這道題,他將失去 x * ai 的分數。

請合理安排做題順序,使得當小明做完比賽時,失去的分數盡可能少。

輸入

第一行給出乙個正整數 t(t<=10),表示資料組數。

對於每組資料,第一行乙個正整數 n,表示這場比賽的題目數。第二行 n 個整數,表示做每道題需要的時間 ti。第三行 n 個整數,表示每題每分鐘失去的分數 ai。

其中:0輸出

對於每組資料,輸出乙個整數,表示最少失去的分數。

樣例輸入

1

310 10 20

1 2 3

樣例輸出

150

解題思路

之前做過一道類似這樣的題,看到這個題,出現了時間和權重,我的第一反應就按照算單位時間所佔得權重大者排序,然後計算即可。

參考**

#include #include #include #include #define max_len 100005

using namespace std;

int beauty[max_len];

typedef struct program

program;

program program[max_len];

bool cmp(program a, program b)//按照k從打到小

int main()

for(int i=0;i>program[i].a;

// a/t,計算單位時間內的比例獲得的分

program[i].k = (double)program[i].a / (double)program[i].t;

} sort(program,program+n,cmp);//排序

long long time = 0;

long long sum = 0;

for(int i=0;icout<} return 0;

}

2019小明的比賽c

問題描述 小明的演算法競賽水平很高,他經常參加網上的比賽。比賽的規則是這樣的 要在規定時間內解決 n 道題,解決時間越晚失去的 分數就越多。當然如果有錯誤提交還會扣額外的分數。為了簡化題目,我們假設小明所有 題目都可以一遍 ac。小明實在是太強了,以致於他看完所有題目就都會做了。剩下的就是把它們 寫...

程式比賽的題目回憶

有這樣乙個選擇題 如cc繼承了yy cc裡面宣告了乙個私有的成員變數賦值 string name zhangsna 有乙個main函式,new 之後,輸出物件名.getname yy是它的子類。它也有個私有成員變數。賦值 string name lisi 題目是,執行結果是 zhangsna lis...

某比賽的某些題目

這裡我只寫一些認為應該寫報告的題目。像那種5分鐘敲出 的題就不寫了。感謝 xianbin5組織這場比賽,orz 題目1 給一些資料,建議一顆排序二叉樹。然後找到某個節點的祖父節點 父節點的父節點 n 50000 題解 描述很簡單,而且可以很簡單的敲出來。但是注意資料量。所以這裡要用到特殊的東西。乙個...