luogu P2085 最小函数值

原创 2018年04月16日 15:56:44

题目传送门:https://www.luogu.org/problemnew/show/P2085



题意:

有n个函数F1,F2,F3,……,FnFi(x)=Ai*x^2+Bi*x+Ci (x∈n)),求其中最小的m个。



思路:

开一个小根堆,因为这个x是我们自己枚举的,所以开一个f[i]表示对于第i个函数,我们的x取到了多少。

然后我们可以将x=1的所有情况推进堆中,每次取出堆顶,因为堆顶有且仅属于一个函数,那么我们对应的f[i]++即可(因为x的值可以取更大)。

这种一出一近的操作使得堆内始终保持n个元素,所以时间复杂度为O(mlogn)。



代码:

#include<cstdio>
#include<queue>
using namespace std;
struct node
{
	int id,date;
	friend bool operator<(const node &x,const node &y)
	{
		return x.date>y.date;
	}
};
priority_queue<node>a;
using namespace std;
	int p[20000][5],f[20000];
	int n,m;
int Function(int x,int y)
{
	return p[x][1]*y*y+p[x][2]*y+p[x][3];
}
int main()
{
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		scanf("%d %d %d",&p[i][1],&p[i][2],&p[i][3]);
		a.push((node){i,Function(i,1)});
		f[i]=1;
	}
	for(int i=1;i<=m;i++)
	{
		node now=a.top();
		a.pop();
		printf("%d ",now.date);
		a.push((node){now.id,Function(now.id,++f[now.id])});
	}
}

洛谷 P2085 最小函数值(minval)

  • chai_jing
  • chai_jing
  • 2016-06-01 13:15:42
  • 352

LUOGU P2085 最小函数值

题目描述有n个函数,分别为F1,F2,…,Fn。定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。输...
  • superdata999
  • superdata999
  • 2017-12-16 00:29:41
  • 77

洛谷 P2085 最小函数值

本来是8.3 模拟考 因为昨天沈阳蜜汁暴雨预警 导致变成8.4模拟考 第一题 因为a,b,c都为正整数 所以  对称轴一定在原点左侧而且在x正半轴上单调递增  因此 不要想太多 不需要考虑原...
  • Misfit2001
  • Misfit2001
  • 2017-08-04 14:01:46
  • 125

[luogu]P2085最小函数值-堆排的玄学运用

题目描述 有n个函数,分别为F1,F2,...,Fn。定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多...
  • misayap
  • misayap
  • 2017-12-10 19:51:51
  • 90

最小函数值 洛谷2085 堆

题目描述有n个函数,分别为F1,F2,…,Fn。定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。输...
  • jpwang8
  • jpwang8
  • 2017-02-08 20:52:16
  • 196

洛谷 堆专题 最小函数值

题目描述 有n个函数,分别为F1,F2,...,Fn。定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输...
  • masterwater
  • masterwater
  • 2017-01-18 16:31:29
  • 241

SSL 1411 最小函数值_优先队列

题目大意在n个函数中找出前m小的函数值思路先将第一个函数的前m个加入队列中,然后枚举其他函数,如果当前x得出的值已经比队头大的话可以直接break 这里每找到一个比队头小的数时都要将队头弹出 O(...
  • Nidhogg__
  • Nidhogg__
  • 2016-12-07 17:36:48
  • 262

最小函数值

题目大意给n个函数。Fi(x)=Ai*x^2+Bi*x+Ci 。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个。输入3 10 4 5 3 3 4 5 1 7 1输出9 12 1...
  • qq_34593871
  • qq_34593871
  • 2016-12-14 16:57:03
  • 174

洛谷P2085最小函数值STL模板解题报告

原题见(https://www.luogu.org/problem/show?pid=2085) 其实这道题打暴力也能过最简单的方法可以把每个函数的函数值全部计算100个存进数组里然后排个序输出就可...
  • a1351937368
  • a1351937368
  • 2017-09-23 10:31:43
  • 381

最小函数值(minval)

有n个函数,分别为F1,F2,…,Fn。定义Fi(x)=Ai*x^2+Bi*x+Ci(x∈N*)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。 【输入格...
  • sinat_34943123
  • sinat_34943123
  • 2016-08-17 20:58:36
  • 396
收藏助手
不良信息举报
您举报文章:luogu P2085 最小函数值
举报原因:
原因补充:

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