acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 竞赛
  • 讨论
  • 团队
登录
注册
题目详情提交记录(0)
  • 题解

    也算是一种可反悔贪心 如果新的函数比堆顶元素小的话就把堆顶元素弹出

    userId_undefined

    cjdstttttt

    时空双修者尊贵铂金题解仙人勇敢小狗CSP-J一等奖出题人
    47阅读
    0回复
    0点赞
  • 题解

    #include <iostream> #include <queue> #include <vector> #include <algorithm> using namespace std; // 表示每个函数的结构体 struct Function { int a, b, c; // 计算函数在x处的值 int value(int x) const { return a * x * x + b * x + c; } }; // 优先队列中的元素,包含函数索引和当前x值 struct Element { int funcIdx; // 函数索引 int x; // 当前x值 int val; // 当前函数值 }; int main() { int n, m; cin >> n >> m; } 代码解释 Function 结构体:存储每个函数的系数 A、B、C,并提供计算函数值的方法 Element 结构体:表示优先队列中的元素,包含函数索引、当前 x 值和函数值 重载了比较运算符,使优先队列成为最小堆 主函数: 读取输入数据,初始化函数数组 初始化优先队列,将每个函数的第一个值(x=1 时)加入队列 循环 m 次,每次从队列中取出最小值并输出 将该函数的下一个值(x+1 时)加入队列 这种方法的时间复杂度为 O (m log n),其中 n 是函数数量,m 是需要输出的最小值数量。每次从堆中取出元素和插入新元素的操作都是 O (log n),共执行 m 次,因此效率较高,可以处理题目给定的数据范围。

    userId_undefined

    王小帅

    16阅读
    0回复
    1点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页