problem

  • 给定n个二次函数(ai,bi,ci > 0)
  • 求前m小的fi(x)值,x>0
  • n, m < 1e4。

solution

  • 因为都大于0了,所以全都是单增的。。x=1 时各函数值最小
  • 维护一个小根堆,初始时是n个x=1 的函数值。
  • 之后每次弹出最小的并将他的下一个函数值放入堆中。

codes

#include<iostream>
#include<queue>
using namespace std;
const int maxn = 1e4+5;struct func{int a, b, c;}f[maxn];
struct var{int num,x,val;}res[maxn];
bool operator < (var a, var b){return a.val>b.val;}
priority_queue<var,vector<var>,less<var> >q;int main(){int n, m;cin>>n>>m;for(int i = 1; i <= n; i++){cin>>f[i].a>>f[i].b>>f[i].c;q.push((var){i,1,f[i].a+f[i].b+f[i].c});}for(int i = 1; i <= m; i++){var t = q.top();  q.pop();cout<<t.val<<' ';q.push(var{t.num,t.x+1,f[t.num].a*(t.x+1)*(t.x+1)+f[t.num].b*(t.x+1)+f[t.num].c});}return 0;
}

【Luogu2085】最小函数值(优先队列)相关推荐

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

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

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

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

  3. 数据结构之优先队列:最小索引优先队列,Python代码实现——15

    最小索引优先队列(Min index priority queue) 在之前实现的最大优先队列和最小优先队列,他们可以分别快速访问到队列中最大元索和最小元素,但是他们有一 个缺点,就是没有办法通过索引 ...

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

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

  5. P2085 最小函数值 堆

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

  6. LeetCode 1962. 移除石子使总数最小(优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 piles ,数组 下标从 0 开始 ,其中 piles[i] 表示第 i 堆石子中的石子数量. 另给你一个整数 k ,请你执行下述操作 ...

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

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

  8. 最小函数值(minval)

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

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

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

最新文章

  1. ORA-16629: database reports a different protection
  2. VS2015编译TensorFlow C++程序完全攻略
  3. 创业中创新驱动能力_创业培训课程:创新思维能力塑造
  4. Bellman-Ford算法
  5. Properties常用方法
  6. Redis:21---客户端相关配置篇
  7. 在BingoCC上面解析域名实现智能路由
  8. 【对讲机的那点事】对讲机天馈系统关键元器件之功分器
  9. Python – GitHub CentOS
  10. 四阶龙格库塔法程序c语言,四阶龙格库塔法
  11. python基础入门1
  12. 使用 Byzanz 录制 Gif 动画或 Ogv 视频
  13. Tapestry的使用
  14. 动态规划石子排序java_动态规划之石子归并
  15. Win10电脑没有打开蓝牙的按钮怎么办?
  16. 淘宝鹊桥计算工具安卓版小程序
  17. java中hashmap遍历的几种方法
  18. 用智能人脸识别门禁管理工地更严谨考勤更方便
  19. 备忘1:爬取热门微博评论
  20. SQL SERVER 2008中使用VARBINARY(MAX)进行二进制数据存取的实现方法

热门文章

  1. Boltzmann 玻尔兹曼机(BM)
  2. 【剑指 offer】(二十三)—— 从上往下打印二叉树(或曰层次遍历、广度优先遍历)
  3. Trick(十二)——统计 label(序列)各个标签值出现的次数以及出现次数最多的标签
  4. C++中的萃取机制(traits)
  5. linux的进程和作业控制实验报告,Linux基础--进程管理和作业控制
  6. c++数据结构中 顺序队列的队首队尾_数据结构与算法—队列图文详解
  7. 老男孩python14期全套-老男孩第十四期Python学习班之Day01
  8. python有什么用-python有什么用
  9. python发音1001python发音-Python学习笔记Day3 - Python运算符
  10. 开课吧python小课学了有用吗-这个神仙技能,让你为所欲为!速来 !