UVa 1346 Songs (贪心好题)

原创 2013年12月06日 13:06:53

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=4092


思路:直接看这个和式,记A(i)=f(i)Σl(j) (1<=j<=i),则sum=ΣA(i)(别被下标迷惑了,s(i)完全可以用i代替)。

设sum已经达到最小,

记sum1 = A(i)+A(i+1) = (f(i)+f(i+1))*(l(1)+...+l(i-1)) + f(i)*l(i) f(i+1)*l(i) + f(i+1)*l(i+1)

交换f(i)和f(i+1),交换l(i)和l(i+1),得sum2= (f(i)+f(i+1))*(l(1)+...+l(i-1)) + f(i)*l(i) f(i)*l(i+1) + f(i+1)*l(i+1)

因为sum最小,必有sum1<=sum2,故f(i+1)*l(i)<=f(i)*l(i+1)

(也可以这么理解,频率越大的,长度越短的,即f(i)/l(i)越大的,位置越靠前)


完整代码:

/*0.032s*/

#include<bits/stdc++.h>
using namespace std;

struct node
{
	int id;
	double l, f;
	bool operator < (const node& a) const
	{
		return a.f * l < f * a.l;
	}
} a[65540];

int main()
{
	int n, i, s;
	while (~scanf("%d", &n))
	{
		for (i = 1; i <= n; ++i)
			scanf("%d%lf%lf", &a[i].id, &a[i].l, &a[i].f);
		scanf("%d", &s);
		nth_element(a + 1, a + s, a + n + 1);
		printf("%d\n", a[s].id);
	}
	return 0;
}

Uva1346

SongsTime Limit:1000MS    Memory Limit:65536KB    64bit IO Format:%I64d & %I64u Descripti...

timus 1346. Intervals of Monotonicity URAL 解题报告 DP 小水题,阅读理解

timus  1346. Intervals of Monotonicity URAL 解题报告 坑死人的小破题,给一个数列,然后判断这个数列的complexity 是多少,所谓的complexit...

UVA 11134 Fabled Rocks [贪心,但与一般题有些不同]

题目链接 容易发现,行与列是相互独立的,可以单独考虑 。  看到白书上提示说是经典问题的变形,还以为是八皇后之类的,于是写了个回溯,果然TLE了。 仔细考虑后,可以对所有的区间[L,R]按某个顺...

Uva 11729 Commando War - 水题 - 贪心

题目描述:lrj厚白书第一章第二道例题 题目分析:因为任务是可以并行的执行,所以直觉上是花费时间长的任务优先去部署。但是这到题目还给你交待任务的时间,所以容易让人想多了。 不管有没有交待任务的时间,对...
  • mr_zys
  • mr_zys
  • 2013年12月04日 19:07
  • 729

UVA-1368-DNA Consensus String 基础题 贪心 模拟 详细注释

题意: 1. 给你一堆同长度的DNA链,要你计算他们共识错误(题目里说的什么汉明距离)最少的并且字典序最小的DNA链 2. 没有要求多组数据输入 思路: 1. 首先是对起到桶排序作用的数组a进...

UVA 1599 Ideal Path 【两次BFS+贪心】 (好题)

题目链接题意迷宫中有n个房间,m条路,每条路上都涂上了颜色(用整数表示),求按走的路径的颜色排列的字典序最小的最短路分析贪心方法求最短路当然简单,每条路的长度都是1,BFS、SPFA、Dijkstra...
  • DrCarl
  • DrCarl
  • 2016年07月24日 22:20
  • 132

CERC 2004 / UVa 1335 Beijing Guards (二分&贪心&想法题)

1335 - Beijing Guards Time limit: 3.000 seconds  http://uva.onlinejudge.org/index.php?option=com_onl...

UVA 1614 Hell on the Markets 【贪心+结论题】

题目链接题意给一串序列,保证序列中每个数满足ai≤ia_i \leq i ,问能否给这些数每个数前面填上正负号,使得其和为0.分析先上结论 数列an{a_n}满足 ∀ai∈an,ai≤i\for...
  • DrCarl
  • DrCarl
  • 2016年07月29日 23:13
  • 135

UVa 757 / POJ 1042 / East Central North America 1999 Gone Fishing (枚举&贪心&想法题&优先队列)

757 - Gone Fishing Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinej...

UVa 11264 Coin Collector (选硬币&贪心好题)

思路: 1. 你肯定注意到了,面值最大的硬币c[n-1]必须要选。(反证:如果花了sum元却没有选中它,可知sum...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVa 1346 Songs (贪心好题)
举报原因:
原因补充:

(最多只允许输入30个字)