码迷,mamicode.com
首页 > 其他好文 > 详细

uva10026 - Shoemaker's Problem(贪心)

时间:2014-07-27 11:33:02      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

题目:10026 - Shoemaker‘s Problem


题目大意:有个鞋匠在同一天接到了一堆的生意。可是他每天只能做一双鞋,给出做每双鞋需要的时间和推辞做鞋的赔偿。问怎样合理的分配才能使得赔偿最小。


解题思路:鞋子编号  要花的时间  需要的赔偿(每天)

                      1                    1                100

                      2                    5                  4

这样的两双鞋有两种安排:  

                     做完1再做2      赔偿  1 * 4;

                     做完2再做1      赔偿   5 * 100;

                     所以应该将时间/赔偿小的鞋子先做。


代码:

#include <stdio.h>
#include <algorithm>
using namespace std;


const int N = 1005;

struct Shoe {

	int i;
	int t;
	int f;
}s[N];

int cmp (const Shoe &a, const Shoe &b) {return a.t * b.f < b.t * a.f;}

int main () {

	int t;
	scanf ("%d", &t);

	int n;
	while (t--) {

		scanf ("%d", &n);
		for (int i = 0; i < n; i++) {

			scanf ("%d%d", &s[i].t, &s[i].f);
			s[i].i = i + 1;
		}

		sort (s, s + n, cmp);

		for (int i = 0; i < n; i++) {

			if (i == n - 1)
				printf ("%d\n", s[i].i);
			else
				printf ("%d ", s[i].i);
		}
		if (t)
			printf ("\n");
	}
	return 0;
}


uva10026 - Shoemaker's Problem(贪心)

标签:

原文地址:http://blog.csdn.net/u012997373/article/details/38150671

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!