题目描述

有n个函数,分别为F1,F2,...,Fn。定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。

输入输出格式

输入格式:

输入数据:第一行输入两个正整数n和m。以下n行每行三个正整数,其中第i行的三个数分别位Ai、Bi和Ci。Ai<=10,Bi<=100,Ci<=10 000。

输出格式:

输出数据:输出将这n个函数所有可以生成的函数值排序后的前m个元素。这m个数应该输出到一行,用空格隔开。

输入输出样例

输入样例#1: 复制

3 10
4 5 3
3 4 5
1 7 1

输出样例#1: 复制

9 12 12 19 25 29 31 44 45 54

说明

数据规模:n,m<=10000

和上一题序列合并类似  用了类贪心思想 很重要!

#include<bits/stdc++.h>
using namespace std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);--i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m)
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s);
#define ll long long
#define pb push_back
#define REP(i,N)  for(int i=0;i<(N);i++)
#define CLR(A,v)  memset(A,v,sizeof A)
//
#define inf 0x3f3f3f3f
const int N=100000+5;
int a[N];
int b[N];
int heap[N];
int from[N];
int now[N];
struct node
{int a,b,c;int now;int v;bool operator< (const node & b)const{return v>b.v;}
}s[N];int main()
{priority_queue<node>q;int n,m;RII(n,m);rep(i,1,n)RIII(s[i].a,s[i].b,s[i].c),s[i].now=0;rep(i,1,n){s[i].now++;int x=s[i].now;s[i].v=s[i].a*x*x+s[i].b*x+s[i].c;q.push(s[i]);}int cnt=1;node head;int last;while(cnt<=m){head=q.top();q.pop();printf("%d ",head.v);int x=++head.now;head.v=( head.a*x*x+head.b*x+head.c);q.push(head);cnt++;}return 0;
}

View Code

转载于:https://www.cnblogs.com/bxd123/p/10804445.html

P2085 最小函数值 堆相关推荐

  1. 洛谷 一种堆套路 P1631序列合并、P2085最小函数值

    题目链接 序列合并 最小函数值 题解 这两道题做法基本一样,是使用同一种套路解决的,这里用序列合并来举例说明. 序列合并要求出N2N2N^2个和中最小的N个数. 我们用一个堆来维护我们需要的数,并且保 ...

  2. P2085 最小函数值(优先队列 分组法运用)

    最小函数值 题目描述 有 nnn 个函数,分别为 F1,F2,-,FnF_1,F_2,\dots,F_nF1​,F2​,-,Fn​.定义 Fi(x)=Aix2+Bix+Ci(x∈N∗)F_i(x)=A ...

  3. [优先队列] 洛谷 P2085 最小函数值

    题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个 ...

  4. 【洛谷 P2085】最小函数值【堆】

    解题思路 所以我们建一个大根堆,存最小的数到第m小的数,第m小的数就理所当然的是堆顶了. 每次我们只需要比较新加进来的数比堆顶大还是比堆顶小. 如果比堆顶小,将原来的堆顶丢掉,将新的数塞进去: 如若比 ...

  5. 【Luogu2085】最小函数值(优先队列)

    problem 给定n个二次函数(ai,bi,ci > 0) 求前m小的fi(x)值,x>0 n, m < 1e4. solution 因为都大于0了,所以全都是单增的..x=1 时 ...

  6. 1370:最小函数值(minval)

    [题目描述] 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Aix2+Bix+Ci(x∈N∗).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). ...

  7. [Leetcode][第632题][JAVA][最小区间][堆][滑动窗口]

    [问题描述][困难] [解答思路] 1. 堆 复杂度 class Solution {public int[] smallestRange(List<List<Integer>> ...

  8. 最小函数值(信息学奥赛一本通-T1370)

    [题目描述] 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Aix2+Bix+Ci(x∈N∗).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). ...

  9. 最小函数值(minval)

    有n个函数,分别为F1,F2,-,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci(x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). [输入格式 ...

最新文章

  1. UIActionSheet在iOS8中被弃用造成的错误
  2. bash shell的一些基本概念
  3. WSAIoctl 函数详解
  4. 获取本机IP_考虑多网卡的情况
  5. 神经网络- receptive field
  6. PHP3.2.3 where or,WHERE · ThinkPHP3.2.3完全开发手册 · 看云
  7. 关于ireport制作报表模版时的一些注意
  8. 怎样让电脑速度变快_电脑常用软件推荐
  9. 阿里云服务器新手选型指南
  10. python学习第二十三节(反射以及小工具)
  11. MySQL的Grant命令[转]
  12. 基于matlab的不规则面积图像测量,基于matlab的不规则面积图像测量.doc
  13. centos 8 配置yum源并安装开发工具包
  14. 百度地图点聚合,加载1万个marker
  15. 比较好的论坛(个人认为)
  16. 目标高盛,卡方科技用智能金融科技撬动国内量化投资
  17. 使超星数字图书馆的PDG文件转换为PDF文件的方法
  18. DTL相关知识整理初稿
  19. 体验管理,猪飞不起来的风口
  20. linux使用man守护进程,man手册的使用

热门文章

  1. vs需要迁移_这可能是目前最全面的无服务器迁移实践
  2. 仿京东左侧菜单弹出html代码,相仿京东左侧菜单
  3. 【vue】安装新版本vue-cli:@vue/cli
  4. javacript 裁切图片
  5. linux中截断日志
  6. git reset --hanrd撤回_一篇文章,全面掌握Git
  7. 遍历所有点的最短路径python_所有节点最短路径
  8. 服务器文件上传记录,记录一下上传文件(图片)的过程上传图片到ftp服务器
  9. oracle 查看并行数据库,Oracle数据库并行查询出错的解决方法
  10. centos7.5 使用报错:用户名 不在 sudoers文件中,此事将被报告。