数据有点水,我每个函数在对称轴附近生成了 200 个数扔到小根堆里输出就过了。
请求加强数据叉人
下面是部分代码
int n,m;
struct Function{
double A,B,C;
int minx;//对称轴
};
std::priority_queue< std::pair<int,int> >Q;
struct Function f[maxn];
double function(int k,double x){
return f[k].A*pow(x,2)+f[k].B*x+f[k].C;
}
signed main(){
read(n),read(m);
for(int i=1;i<=n;i++){
scanf("%lf%lf%lf",&f[i].A,&f[i].B,&f[i].C);
double z=-f[i].A*2/f[i].B;
int a=std::floor(z);
int b=std::ceil(z);
f[i].minx=function(i,(double)a)>function(i,(double)b)?b:a;
if(f[i].minx<0) f[i].minx=0;
for(int j=f[i].minx-100>0?f[i].minx-100:1,k=1;k<=200;k++,j++)
Q.push(std::make_pair(-function(i,j),0));
}
for(int i=1;i<=m;i++){
printf("%d ",-Q.top().first);
Q.pop();
}
return 0;
}