uva10026

来源:互联网 发布:vr应用领域 数据科学 编辑:程序博客网 时间:2024/06/03 17:35

题目的意思就是有项工作,第一个数是完成这个工作要用的时间(必须一次完成)第二个是推迟这项工作一天要罚多少钱。

问怎么排工作,罚钱最少。

两个工作a,b哪个先做,就是要比较a所需的天数和b的罚款相乘,还有b所需的工作和a的罚款相乘哪个少,决定先后顺序。

根据这个写个cmp函数,用sort排序,然后输出。。


AC代码:


#include<iostream>#include<algorithm>using namespace std;const int N = 1000 + 5;struct work {int num;int day,mon;}w[N];int n,t;int cmp(work a ,work b) {return a.day * b.mon < b.day * a.mon;}int main () {cin >> t;while (t--) {cin >> n;for (int i = 0 ;i < n ;i++) {cin >> w[i].day >> w[i].mon;w[i].num = i + 1;}sort(w , w + n ,cmp);for (int i = 0 ; i < n ;i++) {if(i != 0)cout << " ";cout << w[i].num;}cout << endl;if(t)cout << endl;}}


0 0