UVA 1346 - Songs
来源:互联网 发布:烈焰龙城轮回数据 编辑:程序博客网 时间:2024/05/16 15:18
/*
这是一个贪心的题目,要求求出最小的sum = b1+..+bn ,bi= fi*(a1+..+ai);
假设以求出最小的sum 得到了最优序列 那么 bi+b[i+1] = fi*(a1+..ai) + fi+1*(a1+..+a[i+1])
sum1 = (a1+..ai-1)*(fi+f[i+1]) + f[i+1]*a[i+1]+ f[i+1]*a[i] + fi*ai;
现在交换 fi与fi+1 ai与ai+1
sum2 = (a1+..ai-1)*(fi+f[i+1]) + f[i+1]*a[i+1]+ f[i]*a[i+1] + fi*ai;
ans = sum1 - sum2 = f[i+1]*a[i] - f[i]*a[i+1]
if ans > 0 : swap (i,i+1);
*/
#include<cstdio>
#include<cstring>#include<cstdlib>
struct data
{
int id;
double l,f;
} a[80000];
int cmp(const void *a,const void *b)
{
struct data *p = (struct data*)a;
struct data *q = (struct data*)b;
return q->f*p->l > p->f*q->l?1:-1;
}
int main()
{
int n,s;
while(scanf("%d",&n)==1)
{
for(int i = 0; i < n; i++)
{
scanf("%d%lf%lf",&a[i].id,&a[i].l,&a[i].f);
}
scanf("%d",&s);
qsort(a,n,sizeof(a[0]),cmp);
printf("%d\n",a[s-1].id);
}
return 0;
}
- UVA 1346 - Songs
- UVa 1346 - Songs
- UVA 1346 - Songs (贪心)
- UVA - 1346 Songs 贪心
- Songs (UVA-1346)贪心
- uva 1346 Songs
- uva 1346 - Songs(贪心)
- 【UVA】1346 - Songs(贪心)
- uva 1346 Songs(贪心)
- uva 1346 - Songs(贪心)
- UVa 1346 Songs (贪心好题)
- 1346 - Songs (贪心)
- songs
- songs
- Songs
- english songs
- Christmas Songs
- some songs
- 总结C++设计学习
- 这才叫赚钱:月薪10000的程序员给我上了震撼一课!~
- java 数组
- 程序的真正入口
- 详解Java解析XML的四种方法
- UVA 1346 - Songs
- Socket编程指南及示例程序
- 深入浅出Netty之一概念模型
- JAVA NIO 大文件读取
- java学习——画图板
- 蛇年回顾我的2012,展望2013—菜鸟程序员的成长
- com.sun.awt.AWTUtilities.setWindowOpacity相关说明
- Spring --- Validation
- IPA转APP的方法和APP转IPA的方法