最小函数值,洛谷之提高历练地,堆

原创 2018年04月16日 11:28:04

正题

      第四题:最小函数值

      我们还是仿照第三题的做法,我们先维护一个大根堆,使大根堆里面有m个元素,然后每次加入新的x,看一下是否小于堆顶,如果可以,那就更换堆顶,这样我们就可以保证是最小的m个,那么当没有元素可以加到堆内,就是我们的结束。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;

int n,m;
bool tf[10010];
priority_queue<long long> f;
struct node{
	long long a,b,c;
}s[10010];
int t[10010];
int tot;

int main(){
	scanf("%d %d",&n,&m);
	tot=n;
	for(int i=1;i<=n;i++) scanf("%d %d %d",&s[i].a,&s[i].b,&s[i].c);
	int q=1,tt=1;
	while(q<=m){
		for(int i=1;i<=n;i++){
			long long yy=s[i].a*tt*tt+s[i].b*tt+s[i].c;
			f.push(yy);
			q++;
		}
		tt++;
	}
	while(q>m+1) f.pop(),q--;
	while(tot>0){
		for(int i=1;i<=n;i++){
			if(tf[i]==false){
				long long now=s[i].a*tt*tt+s[i].b*tt+s[i].c;
				if(now>=f.top()) {
					tf[i]=true,tot--;
					continue;
				}
				f.pop();
				f.push(now);
			}
		}
		tt++;
	}
	while(!f.empty())
		t[++tot]=f.top(),f.pop();
	for(int i=tot;i>=1;i--)
		printf("%d ",t[i]);
}

      

版权声明: https://blog.csdn.net/Deep_Kevin/article/details/79958326

2002年考研政治大纲各部分知识点变化情况

2002年考研政治大纲各部分知识点变化情况2001年05月29日16:00:40 中国教育热线   本文为2002年政治考试大纲修订说明部分   2002年全国硕士研究生入学考试政治理论考试大纲在20...
  • stanely
  • stanely
  • 2001-06-04 21:30:00
  • 540

SuperGCD,洛谷之提高历练地,数论(3-5)

前话      数论就是研究整数的理论。包括公约公倍数、质数、欧拉定理和同余方程等。正文       其实数论不止那么简单正文      第一题:SuperGCD      这一题就是很烦的代码加很烦...
  • Deep_Kevin
  • Deep_Kevin
  • 2018-04-07 17:19:43
  • 13

[SDOI2009]E&D,洛谷之提高历练地,博弈论(3-6)

正题      第四题:[SDOI2009]E&amp;amp;D      这题不是如此的简单,因为它要涉及到找规律和Sg函数。      首先的,我们可以打一个表来观察之间的关系。      Sg...
  • Deep_Kevin
  • Deep_Kevin
  • 2018-04-08 13:48:45
  • 13

最小函数值 洛谷2085 堆

题目描述有n个函数,分别为F1,F2,…,Fn。定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。输...
  • jpwang8
  • jpwang8
  • 2017-02-08 20:52:16
  • 196

洛谷 堆专题 最小函数值

题目描述 有n个函数,分别为F1,F2,...,Fn。定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输...
  • masterwater
  • masterwater
  • 2017-01-18 16:31:29
  • 241

种树,洛谷之提高历练地,堆

正题      第五题:种树      这题看上去很烦,实际上也很烦。。。      那么我们第一个想到的就是用堆维护最大值。      我们把多步拆成多个一步来求解,当k=1的时候,那么答案就是最大...
  • Deep_Kevin
  • Deep_Kevin
  • 2018-04-16 11:42:57
  • 4

序列合并,洛谷之提高历练地,堆

正文      第三题:序列合并      我们很容易就可以得到一个结论,将A,B从小到大排序后,可以满足A1+B1&amp;lt;=A1+B2&amp;lt;=A1+B3...      我们也可以...
  • Deep_Kevin
  • Deep_Kevin
  • 2018-04-16 11:18:09
  • 21

[HNOI2003]操作系统,洛谷之提高历练地,堆

正题      第二题:[HNOI2003]操作系统      我们看到了“优先级最高”这几个字,我们就想到了用堆来维护bool operator&amp;lt;(const node y)const...
  • Deep_Kevin
  • Deep_Kevin
  • 2018-04-16 10:55:04
  • 21

SSL 1411 最小函数值_优先队列

题目大意在n个函数中找出前m小的函数值思路先将第一个函数的前m个加入队列中,然后枚举其他函数,如果当前x得出的值已经比队头大的话可以直接break 这里每找到一个比队头小的数时都要将队头弹出 O(...
  • Nidhogg__
  • Nidhogg__
  • 2016-12-07 17:36:48
  • 262

最小函数值

题目大意给n个函数。Fi(x)=Ai*x^2+Bi*x+Ci 。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个。输入3 10 4 5 3 3 4 5 1 7 1输出9 12 1...
  • qq_34593871
  • qq_34593871
  • 2016-12-14 16:57:03
  • 174
收藏助手
不良信息举报
您举报文章:最小函数值,洛谷之提高历练地,堆
举报原因:
原因补充:

(最多只允许输入30个字)