題目描述
小明的演算法競賽水平很高,他經常參加網上的比賽。輸入比賽的規則是這樣的:要在規定時間內解決 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 題解 描述很簡單,而且可以很簡單的敲出來。但是注意資料量。所以這裡要用到特殊的東西。乙個...