IT民工
加油!

这道题是贪心的题,因为鞋匠做事情都是得持续做的,所以我们根据事件的价值降序排序。

这里用的依然是间接排序。

#include<stdio.h>
#include<stdlib.h>
#define MAXD 1010
double t[MAXD], s[MAXD], w[MAXD];
int r[MAXD];
int cmp( const void *_p, const void *_q)
{
int *p = (int *)_p;
int *q = (int *)_q;
return w[*p] < w[*q];
}

int main()
{
int cas, n;
scanf( "%d", &cas);
while( cas --)
{
scanf( "%d", &n);
for( int i = 0; i < n; i ++)
{
scanf( "%lf%lf", &t[i], &s[i]);
w[i] = s[i] / t[i];
r[i] = i;
}
qsort( r, n, sizeof r[0], cmp);
for( int i = 0; i < n - 1; i ++)
{
printf( "%d ", r[i] + 1);
}
printf( "%d\n", r[n-1] + 1);
if( cas > 0) printf( "\n");
}
return 0;
}

 

 

posted on 2011-11-27 23:57  找回失去的  阅读(234)  评论(0编辑  收藏  举报