wls 有 n 个二次函数 Fi(x) = aix2 + bix + ci (1 ≤ i ≤ n).
现在他想在∑ni=1xi = m 且 x 为正整数的条件下求∑ni=1Fi(xi)的最小值。
请求出这个最小值。
第一行两个正整数 n, m。
下面 n 行,每行三个整数 a, b, c 分别代表二次函数的二次项, 一次项,常数项系数。
1 ≤ n ≤ m ≤ 100, 000
1 ≤ a ≤ 1, 000
−1, 000 ≤ b, c ≤ 1, 000
一行一个整数表示答案。
2 3
1 1 1
2 2 2
13
2019中国大学生程序设计竞赛-女生专场
由 n == m 得
所有的 x=1 得总值
如果 n #include "bits/stdc++.h"
using namespace std;
#define ll long long
struct ppp
{ll a,b,c,x;ll ans;bool operator <(const ppp &x) const{if(ans==x.ans)return a>x.a;return ans>x.ans;}}t;
priority_queueq;
int main()
{ll n,m;ll sum=0;//记录总值cin>>n>>m;for(int i=1;i<=n;i++){t.x=1;//一开始所有的x=1cin>>t.a>>t.b>>t.c;sum+=t.a+t.b+t.c;//x=1的结果t.ans=(2*t.x+1)*t.a+t.b; //x 与 x+1 的差值 (2x+1)a+b q.push(t);}m-=n;while(m--){t=q.top();q.pop();t.x++;sum+=t.ans;//加上差值t.ans=(2*t.x+1)*t.a+t.b; q.push(t);}cout<