【题目描述】
有n个函数,分别为F1,F2,...,Fn。定义Fi(x)=Aix2+Bix+Ci(x∈N∗)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。
【输入】
第一行输入两个正整数n和m。
以下n行每行三个正整数,其中第ii行的三个数分别位Ai、Bi和Ci。输入数据保证Ai≤10,Bi≤100,Ci≤10000。
【输出】
将这n个函数所有可以生成的函数值排序后的前m个元素。这m个数应该输出到一行,用空格隔开。
【输入样例】
3 10
4 5 3
3 4 5
1 7 1【输出样例】
9 12 12 19 25 29 31 44 45 54
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 10001
#define MOD 123
#define E 1e-6
using namespace std;
int a[N],b[N],c[N];
int f[N];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i]>>c[i];
f[i]=1;
}
int minn;
for(int i=1;i<=m;i++)
{
int temp=INF;
for(int j=1;j<=n;j++)
{
if(a[j]*f[j]*f[j]+b[j]*f[j]+c[j]<temp)
{
temp=a[j]*f[j]*f[j]+b[j]*f[j]+c[j];
minn=j;
}
}
cout<<a[minn]*f[minn]*f[minn]+b[minn]*f[minn]+c[minn]<<" ";
f[minn]++;
}
return 0;
}
信息学奥赛一本通T1370:堆及其应用 最小函数值 归属于 堆及其应用,更多同类题解源程序见:堆及其应用 和 最小函数值
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!