P2085 最小函数值 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<iostream>
#include<queue>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
#define ll long long
const int N=1e4+100;
int n,m;
struct node{int a,b,c;
}f[N];
int main()
{scanf("%d%d",&n,&m);priority_queue<int,vector<int>,less<int> >q;for(int i=1;i<=n;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);f[i]={a,b,c};}for(int i=1;i<=n;i++){for(int x=1;x<=m;x++)//枚举每组数计算1到m次后的函数值并存入堆{int y=f[i].a*x*x+f[i].b*x+f[i].c;if(i==1)//把第一组的计算出的值先全部存入q.push(y);else{if (y < q.top())//当前计算出的函数值小于堆顶的时候{q.pop();q.push(y);}}}}vector<int>v;//处理输出的顺序(从小到大)while(m--){v.push_back(q.top());q.pop();}reverse(v.begin(),v.end());for(auto i:v)printf("%d ",i);return 0;
}