wls 有 n 个二次函数 Fi(x) = aix2 + bix + ci (1 ≤ i ≤ n).
现在他想在∑ni=1xi = m 且 x 为正整数的条件下求∑ni=1Fi(xi)的最小值。
请求出这个最小值。
Input
第一行两个正整数 n, m。
下面 n 行,每行三个整数 a, b, c 分别代表二次函数的二次项, 一次项,常数项系数。
1 ≤ n ≤ m ≤ 100, 000
1 ≤ a ≤ 1, 000
−1, 000 ≤ b, c ≤ 1, 000
Output
一行一个整数表示答案。
Sample Input
2 3
1 1 1
2 2 2
Sample Output
13

思路:

因为题目要求所以的xi 都要为正整数,那么每一个xi最小也要是1 ,所以我们先给每一个xi赋值为1,

同时,我们用堆来维护对于每一个二次函数 当前的 F(xi+1) - F( xi ) 为什么维护这个数?

因为当前的xi值对应的函数值是F(xi ) 我们要让sum xi = m 如果 M>n 肯定要给一些二次函数值得xi增加数值的,那么我们通过维护的这个信息,

每一次贪心的去增加一个让 那个函数值 xi 增加为 xi+1 最答案的贡献是最小。

重复此过程,直至sum xi = m

细节见代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#include <iomanip>
#define ALL(x) (x).begin(), (x).end()
#define sz(a) int(a.size())
#define all(a) a.begin(), a.end()
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repd(i,x,n) for(int i=x;i<=n;i++)
#define pii pair<int,int>
#define pll pair<long long ,long long>
#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MS0(X) memset((X), 0, sizeof((X)))
#define MSC0(X) memset((X), '\0', sizeof((X)))
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define eps 1e-6
#define gg(x) getInt(&x)
#define chu(x) cout<<"["<<#x<<" "<<(x)<<"]"<<endl
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
ll powmod(ll a,ll b,ll MOD){ll ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
inline void getInt(int* p);
const int maxn=1000010;
const int inf=0x3f3f3f3f;
/*** TEMPLATE CODE * * STARTS HERE ***/
struct node
{ll a,b,c;ll x;ll val;bool operator < (const node & t) const {return val>t.val;}
};
priority_queue<node> heap;
int n;
int m;
ll gao(ll a,ll b, ll c ,ll x)
{return a*x*x+b*x+c;
}
int main()
{//freopen("D:\\common_text\\code_stream\\in.txt","r",stdin);//freopen("D:\\common_text\\code_stream\\out.txt","w",stdout);gbtb;cin>>n>>m;ll a,b,c;ll ans=0ll;repd(i,1,n){cin>>a>>b>>c;node temp;temp.a=a;temp.b=b;temp.c=c;temp.x=1;temp.val=gao(a,b,c,2)-gao(a,b,c,1);heap.push(temp);}m-=n;while(m--){node temp=heap.top();heap.pop();temp.x++;temp.val=gao(temp.a,temp.b,temp.c,temp.x+1)-gao(temp.a,temp.b,temp.c,temp.x);heap.push(temp);}while(!heap.empty()){node temp=heap.top();heap.pop();ans+=gao(temp.a,temp.b,temp.c,temp.x);}cout<<ans<<endl;return 0;
}inline void getInt(int* p) {char ch;do {ch = getchar();} while (ch == ' ' || ch == '\n');if (ch == '-') {*p = -(getchar() - '0');while ((ch = getchar()) >= '0' && ch <= '9') {*p = *p * 10 - ch + '0';}}else {*p = ch - '0';while ((ch = getchar()) >= '0' && ch <= '9') {*p = *p * 10 + ch - '0';}}
}

转载于:https://www.cnblogs.com/qieqiemin/p/11306319.html

Function HDU - 6546 (数学,贪心)相关推荐

  1. hdu 5419(数学期望)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5419 题解: 首先分母是C(m,3),考虑如何求出分子 考虑数学期望的独立性,我们首先可以用线性的时间 ...

  2. hdu 5248(二分+贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5248 解题思路:这道题我原本的思路是动态规划,结果看到数很大,结果放弃了.然后想到二分,思路是对的,只 ...

  3. hdu 5246(贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5246 解题思路:先排序,在采用贪心的方法,先给百小度找到合适的初始战斗力,找到比初始战斗力上限小的中最 ...

  4. #10010 「一本通 1.1 练习 6」糖果传递 (数学+贪心)

    题目描述 原题来自:HAOI 2008 有 n个小朋友坐成一圈,每人有 ai 颗糖果.每人只能给左右两人传递糖果.每人每次传递一颗糖果的代价为 1 .求使所有人获得均等糖果的最小代价. 输入格式 第一 ...

  5. hdu 4296 Buildings (贪心)

    http://acm.hdu.edu.cn/showproblem.php?pid=4296 题意: 给出n个石板的重量w和它的承受能力s,将这n个石板累在一起,这样每个石板都有一个PDV = (Σw ...

  6. HDU - 6438(贪心+思维)

    链接:HDU - 6438 题意:给出 n ,表示 n 天.给出 n 个数,a[i] 表示第 i 天,物品的价格是多少.每天可以选择买一个物品,或者卖一个已有物品,也可以什么都不做,问最后最大能赚多少 ...

  7. HDU 4023 (博弈 贪心 模拟) Game

    如果硬要说这算是博弈题目的话,那这个博弈是不公平博弈(partizan games),因为双方面对同一个局面做出来的决策是不一样的. 我们平时做的博弈都是公平博弈(impartial games),所 ...

  8. hdu 5587(数学规律)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5587 解题思路: 首先可以预处理第i天有多少个数以及前i天的数之和. 接下来就可以先二分找到最大的天数 ...

  9. hdu 5570(数学期望)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5570 [分析] 用A[i][j]表示第i个球为颜色j的概率 用c[j]表示颜色为j的球的个数 用E[x ...

最新文章

  1. 006_Gson定制型适配器
  2. 第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析
  3. spring-boot--整合thymeleaf模板
  4. 信息安全工程师笔记-恶意代码防范技术原理
  5. python打代码运行图形_利用aardio给python编写图形界面
  6. 修改环境变量后,导致一些常用命令失效,如ll,ls,vi不能用
  7. C#实现多级子目录Zip压缩解压实例
  8. 引物设计软件_你的引物设计进行得如何了?这份PCR引物设计及软件使用技巧供你参考...
  9. java删除文件,重命名文件
  10. 多图片上传,多文件上传。插件diyUpload.js
  11. Android Studio 添加javah工具
  12. 巧用腾讯文档把pdf免费转word方法
  13. 音乐节拍自动标记插件 BeatEdit 2 for Pr
  14. 利用客户支持建立忠诚度和竞争优势
  15. Zigbee安全概述
  16. 看完了 vue-cli 源码,总结了这几个点
  17. 电磁炉各主要元件名词,符号及功能解析
  18. 【js html】对于img图片的引用填充,src可以给什么值?
  19. Synaptic Systems NeuN抗体的应用和参考文献
  20. 前端必不可少的脚手架

热门文章

  1. 如何处理SAP gateway service使用过程中遇到的400 error - invalid key predicate type for guid
  2. 从产品展示页面谈谈Hybris系列之三:Hybris Service层介绍
  3. SAP CRM呼叫中心里confirm按钮的实现逻辑
  4. 如何处理VMware启动虚拟机时的错误信息Failed to lock the file
  5. 用Fidder实现IOS手机抓包
  6. console 一行_你还在用 console.log 调试?
  7. python 嵌套数组_兴趣是最好的老师,快速入门:十分钟学会python
  8. hmc如何进入aix系统_linux系统中如何进入退出vim编辑器,方法及区别
  9. 寻找两个正序数组的中位数Python解法
  10. java dao service实例_浅谈Action+Service +Dao 功能