最小函数值(信息学奥赛一本通-T1370)
生活随笔
收集整理的這篇文章主要介紹了
最小函数值(信息学奥赛一本通-T1370)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目描述】
有n個函數,分別為F1,F2,...,Fn。定義Fi(x)=Aix2+Bix+Ci(x∈N?)。給定這些Ai、Bi和Ci,請求出所有函數的所有函數值中最小的m個(如有重復的要輸出多個)。
【輸入】
第一行輸入兩個正整數n和m。
以下n行每行三個正整數,其中第ii行的三個數分別位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
【源程序】
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<cstdlib> #include<queue> #include<vector> #define INF 0x3f3f3f3f #define PI acos(-1.0) #define N 10001 #define MOD 123 #define E 1e-6 using namespace std; int a[N],b[N],c[N]; int f[N]; int main() {int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i]>>b[i]>>c[i];f[i]=1;}int minn;for(int i=1;i<=m;i++){int temp=INF;for(int j=1;j<=n;j++){if(a[j]*f[j]*f[j]+b[j]*f[j]+c[j]<temp){temp=a[j]*f[j]*f[j]+b[j]*f[j]+c[j];minn=j;}}cout<<a[minn]*f[minn]*f[minn]+b[minn]*f[minn]+c[minn]<<" ";f[minn]++;}return 0; }?
總結
以上是生活随笔為你收集整理的最小函数值(信息学奥赛一本通-T1370)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常用技巧 —— 打表规律
- 下一篇: 找树根和孩子(信息学奥赛一本通-T133