LA 3303 / POJ 2675 Songs (数学证明+排序)
来源:互联网 发布:网络与新媒体专科 编辑:程序博客网 时间:2024/06/07 16:26
题目链接:http://poj.org/problem?id=2675
题目大意:给定n首歌,求出一种放歌顺序使得下图中的式子值最小,s(i)代表每首歌的标号,f(s(i))表示编号为s(i)的歌播放频率,l(s(i))表示编号为s(i)的歌的播放时长,询问第s首歌的编号。
思路:假设某两首歌A和B,要确定A和B的播放前后关系,假设A要在B之前播放,则有,A.len * A.fre + (A.len + B.len) * B.fre < B.len * B.fre + (A.len + B.len) * a.fre ,化简得A.len * B.fre < B.len * A.fre ,则可以按这种规则对歌曲排序获得最优值。
Code:
/* W w w mm mm 222222222 7777777777777 *//* W w w w m m m m 222 22 7777 *//* w w w w m m m m 22 777 *//* w w w w m m m m 22 77 *//* w w w w m m m m 222 77 *//* w w w w m m m m 222 77 *//* w w w w m m m m 222 77 *//* w w w w m m m m 222 77 *//* w w w w m m m m 222 77 *//* ww ww m mm m 222222222222222 77 *///#pragma comment(linker, "/STACK:102400000,102400000")//C++//int size = 256 << 20; // 256MB//char *p = (char*)malloc(size) + size;//__asm__("movl %0, %%esp\n" :: "r"(p));//G++#include<set>#include<map>#include<queue>#include<stack>#include<ctime>#include<deque>#include<cmath>#include<vector>#include<string>#include<cctype>#include<cstdio>#include<cstdlib>#include<cstring>#include<sstream>#include<iostream>#include<algorithm>#define REP(i,s,t) for(int i=(s);i<=(t);i++)#define REP2(i,t,s) for(int i=(t);i>=s;i--)using namespace std;typedef long long ll;typedef unsigned long long ull;typedef unsigned long ul;const int N=150000;int n;struct song{ int id; double len,fre; bool operator < (const song& A) const { return len*A.fre<A.len*fre; }}s[N];int main(){ #ifdef ONLINE_JUDGE #else freopen("test.in","r",stdin); #endif while(~scanf("%d",&n)) { REP(i,1,n) { scanf("%d%lf%lf",&s[i].id,&s[i].len,&s[i].fre); } int Q; scanf("%d",&Q); sort(s+1,s+1+n); printf("%d\n",s[Q].id); } return 0;}
0 0
- LA 3303 / POJ 2675 Songs (数学证明+排序)
- POJ 2675 Songs (贪心)
- poj 2675 songs
- 快速排序时间复杂度数学证明
- UVALive - 3303 Songs
- songs
- songs
- Songs
- 强连通分量(等价性证明,LA 4287)
- 平均值不等式证明(数学归纳法)
- POJ 2406(KMP) 证明
- uva 1346 - Songs(贪心)
- 【UVA】1346 - Songs(贪心)
- uva 1346 Songs(贪心)
- uva 1346 - Songs(贪心)
- 数学归纳法及其证明(读书笔记——什么是数学)
- 拓扑排序(猜序列,LA 4255)
- 随机性及数学证明
- IT民工进化指南:软件工程师最该了解的新技术Top10
- ios 常见问题
- 如何理清SAT阅读文章结构?
- Storm高级原语(四) — Trident API 综述
- oracle设置定时任务来调用存储过程完成统计(每小时计时一次存到hour表)
- LA 3303 / POJ 2675 Songs (数学证明+排序)
- C++读取并逐行显示txt内容
- Android 截图 代码 截屏 保存图片到本地 根据本地图片路径 显示图片
- Jsoup中select方法详解
- 开发和常用工具推荐清单
- IOS面试问题总结
- git flow
- Storm高级原语(四) — Trident API 综述
- DOJO(一) Hello Dojo!!