uva 1346 - Songs(贪心)
题目大意:John Doe 是一个著名的DJ,现在他有n首播放个曲, 每首歌曲有识别符key,歌曲长度l,以及播放频率q。想在John Doe 想将磁带上的歌曲重新排列,方便播放,播放所有歌曲有一个复杂度的计算∑(1≤i≤n)q[i] * ( ∑(1≤j≤i)l[j] ), 然后给出S,请输出重新排列后的第S首歌的识别码。
解题思路:为了使得复杂度越小,很明显的曲目长度小的要放前面,播放频率小的要放后面,所以每首歌增加一个k = l / q,即k越小的越在前。如果两个k值相同的话,前后是没有差别的。
证:l[i] = L, q[i] = Q, l[j] = K * L, q[j] = K * Q.
l[i] * q[i] + (l[i] + l[j]) * q[j] = (K * K + K + 1) Q * L = l[j] * q[j] + (l[i] + l[j]) * q[i].
- #include <stdio.h>
- #include <string.h>
- #include <algorithm>
- using namespace std;
- const int N = 70000;
- struct song {
- int key;
- int l;
- double q;
- double k;
- }s[N];
- int n, S;
- void init() {
- memset(s, 0, sizeof(s));
- for (int i = 0; i < n; i++) {
- scanf("%d%d%lf", &s[i].key, &s[i].l, &s[i].q);
- s[i].k = s[i].l / s[i].q;
- }
- scanf("%d", &S);
- }
- bool cmp(const song& a, const song& b) {
- return a.k - b.k < 1e-9;
- }
- int main () {
- while (scanf("%d", &n) == 1) {
- init();
- sort(s, s + n, cmp);
- printf("%d\n", s[S - 1].key);
- }
- return 0;
- }
uva 1346 - Songs(贪心)的更多相关文章
- UVA - 1346 Songs (贪心+排序)
题意:已知每首歌的标号,长度和播放频率,求一种播放顺序,使得最小,并且输出该播放顺序下第t首歌的标号. 分析: 1.长度越短,播放频率越大的歌排在前面,上式越小. 2.s(i)表示的是当前播放顺序下这 ...
- 1346 - Songs (贪心)
John Doe is a famous DJ and, therefore, has the problem of optimizing the placement of songs on his ...
- UVa 1346 - Songs
题目大意:n张唱片,每张都有长度和频率,要求题目中公式值最小.求一个排序,输出该排序下第m张CD的id. 思路:贪心,长度越长放越后面,频率越低放越后面,所以按len/p去排序即可. #include ...
- UVa 1617 Laptop (贪心)
题意:有n个长度为1的线段,确定它们的起点,使得第i个线段在[ri,di]之间,输出空隙数目的最小值. 析:很明显的贪心题,贪心策略是这样的,先把所有的区间排序,原则是按右端点进行排序,如果相等再按左 ...
- UVA 311 Packets 贪心+模拟
题意:有6种箱子,1x1 2x2 3x3 4x4 5x5 6x6,已知每种箱子的数量,要用6x6的箱子把全部箱子都装进去,问需要几个. 一开始以为能箱子套箱子,原来不是... 装箱规则:可以把箱子都看 ...
- 突击战 (uva 11729)贪心
思路:就是把J大的放在前面.为什么这样贪心呢? 看看这个图 #include<iostream> #include<algorithm> #include<vector& ...
- 紫书 习题8-12 UVa 1153(贪心)
本来以为这道题是考不相交区间, 结果还专门复习了一遍前面写的, 然后发现这道题的区间是不是 固定的, 是在一个范围内"滑动的", 只要右端点不超过截止时间就ok. 然后我就先考虑有 ...
- 紫书 习题8-8 UVa 1612 (贪心+精度)
这道题我很快就写出来了, 但是一直WA, 然后发现是精度, 这坑了我一个小时-- (1)贪心.每次就尽量分数高, 可以保证最后分数最高 (2)神tm精度问题.记住判断大于小于和等于的时候要用EPS(1 ...
- 紫书 习题8-4 UVa 11491 (贪心)
题意:给你一个数, 要求删去一些数字, 使得剩下的数字最大. 这道题用贪心解决. 大家想一想, 两个数比较大小, 肯定先比较第一位的数,然后依次比较第二位,以此类推. 既然我们要保证最后的数字最大, ...
随机推荐
- JSONToObejct 问题 part 1
直接截图,就明白了 前端的处理 这里用到 JSON2.stringify() 这个方法是将对象(object) 转换成 [{},{},+...+,{}] 这种键值对形式的数据,不然rows只是一个选 ...
- Windows Phone 8初学者开发—第17部分:Coding4Fun工具包简介
原文 Windows Phone 8初学者开发—第17部分:Coding4Fun工具包简介 第17部分:Coding4Fun工具包简介 原文地址: http://channel9.msdn.com/ ...
- css如何li中选中后加上class属性js控制
<ul> <li class=""pageson"><span>1</span></li> <li> ...
- TCP和UDP的"保护消息边界" (经典)
在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的.因此TCP的socket编程,收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发往接收端的包,更有 ...
- IT该忍者神龟Instant client required
pply OS : Windows, Mac, Linux Apply Navicat Product : Navicat for Oracle, Navicat Premium Apply Navi ...
- TCP三次握手和四次挥手具体解释
三次握手:建立TCP须要三次握手才干建立, 先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK ...
- MVC整个样例的源代码
以下就是整MVC样例的源代码: #windows应用程序 #开发者:蔡军生(QQ:9073204) 深圳 2014-9-24 #使用类来描写叙述 from ctypes import * from c ...
- selenium中用js定位html上没有id,没有name的元素
所测试的页面包含display:none的元素,所以考虑用js,在使用js的过程中,js要获得页面的对象,没有id,没有name ...... <a class="employer&q ...
- Thawte SSL123 SSL证书-中国证书.com
Thawte SSL123 SSL证书是域名验证型证书.也是Thawte最廉价的一款证书.该证书签发方便,仅仅须要验证域名全部权就可以签发,无需提交认证文件,通常签发时间仅仅须要1-2个小时.SSL1 ...
- VirtualBox安装及使用说明和虚拟机安装XP系统图文教程
virtualbox是一款开源的虚拟机软件,它能够支持多种操作系统的安装如:Solaris.Windows.DOS.Linux.OS/2 Warp.BSD等系统作为client操作系统,而且最新版本号 ...