首先可以想到要用优先队列,把x的值遍历一下,然后输出前m小的。
最小函数值 传送门
代码如下:
#include<bits/stdc++.h>
#include<queue>
using namespace std;
typedef unsigned long long ll;
priority_queue<ll,vector<ll>,greater<ll> > q;
//priority_queue<typename,vector<typename>,less<typename> > q;
int a[10010],b[10010],c[10010],x,n,m;
ll funtion(int aa,int bb,int cc,int xx){
return aa*xx*xx+bb*xx+cc;
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i]>>c[i];
}
for(x=1;x<=110;x++){
for(int i=1;i<=n;i++)
q.push(funtion(a[i],b[i],c[i],x));
}
while(m--){
cout<<q.top()<<" ";
q.pop();
}
return 0;
}
AC图片: