乱 搞 带 师
查看原帖
乱 搞 带 师
307143
一铭君一楼主2021/7/5 15:09

数据有点水,我每个函数在对称轴附近生成了 200200 个数扔到小根堆里输出就过了。

请求加强数据叉人

下面是部分代码

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;
}
2021/7/5 15:09
加载中...