1370:最小函数值(minval)

简介: 1370:最小函数值(minval)

1370:最小函数值(minval)

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

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

【输入】

第一行输入两个正整数n和m。

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

【输出】

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

【输入样例】

3 10

4 5 3

3 4 5

1 7 1

【输出样例】

9 12 12 19 25 29 31 44 45 54

【提示】

【数据规模】

n,m≤10000。

1. #include <iostream>
2. #include <cstdio>
3. #include <algorithm>
4. using namespace std;
5. int len,maxl,maxx,n,m,xx,yy,zz;
6. struct student{
7.  int a,b,c,x,y;
8. };
9. student tree[100001],z;
10. int cmp(const student &a,const student &b){
11.   if(a.y<b.y) return 1;
12.   return 0;
13. }
14. void put(student zz){
15.   len++;
16.   tree[len]=zz;
17.   tree[len].y=tree[len].a*tree[len].x*tree[len].x+tree[len].b*tree[len].x+tree[len].c;
18.   int son=len;
19.   while(son>1){
20.     int fa=son/2;
21.     if(tree[son].y>=tree[fa].y) return;
22.     swap(tree[son],tree[fa]);
23.     son=fa;
24.   }
25. }
26. void get(){
27.   z=tree[1];
28.   cout<<tree[1].y<<" ";
29.   tree[1]=tree[len--];
30.   int fa=1;
31.   while(fa*2<=len){
32.     int son=fa*2;
33.     if(son+1<=len && tree[son].y>tree[son+1].y) son++;
34.     if(tree[son].y>=tree[fa].y) break;
35.     swap(tree[son],tree[fa]);
36.     fa=son;
37.   }
38.   z.x++;
39.   put(z);
40. }
41. int main()
42. {
43.   cin>>n>>m;
44.   for(int i=1;i<=n;i++){
45.     student s;
46.     cin>>s.a>>s.b>>s.c;
47.     s.x=1;
48.     s.y=s.a*s.x*s.x+s.b*s.x+s.c;
49.     put(s);
50.   }
51.   for(int i=1;i<=m;i++) get();
52.   return 0;
53. }


相关文章
|
18天前
使用函数判断Armstrong 数
【10月更文挑战第24天】使用函数判断Armstrong 数。
18 7
交换两个数的值的方法(三种)
交换两个数的值的方法(三种)
67 1
|
6月前
34.设s=1+1/2+1/3+…+1/n,求与8最接近的s的值及与之对应的n值
34.设s=1+1/2+1/3+…+1/n,求与8最接近的s的值及与之对应的n值
110 0
|
6月前
59.已知xxz+yzz=532,求所有可能的x,y,z的值
59.已知xxz+yzz=532,求所有可能的x,y,z的值
41 0
|
6月前
|
机器学习/深度学习 算法 数据处理
盘点四种计算数组中元素值为1的个数的方法
盘点四种计算数组中元素值为1的个数的方法
88 0
|
6月前
|
算法 测试技术 C#
【位运算 试填法】【推荐】3022. 给定操作次数内使剩余元素的或值最小
【位运算 试填法】【推荐】3022. 给定操作次数内使剩余元素的或值最小
|
6月前
|
Python
计算小于或等于n的非负整数区间包含的1的数量
计算小于或等于n的非负整数区间包含的1的数量
60 0
|
存储 算法
输出函数f(a,b)=2×a2+b2的最小的100个函数值及相应的两个参数的值
输出函数f(a,b)=2×a2+b2的最小的100个函数值及相应的两个参数的值
100 0
02:计算(a+b)*c的值
02:计算(a+b)*c的值
83 0