zoukankan      html  css  js  c++  java
  • [洛谷P2085]最小函数值

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

    解题思路:因为$n,mleq 10000$,暴力枚举肯定是不可取的。我们发现,Fi(x)一定不会大于Fi(x+1),那么我们可以把所有Fi(1)放进一个小根堆里,每次取出一个Fi(x),就把Fi(x+1)放进去,这样就能保证答案从小到大。时间复杂度为$O(mlog n)$。

    C++ Code:

    #include<cstdio>
    #include<ext/pb_ds/priority_queue.hpp>
    using namespace __gnu_pbds;
    struct heapnode{
    	int num,x;long long ans;
    	bool operator<(const heapnode&$)const{return ans>$.ans;}
    };
    priority_queue<heapnode>q;
    int n,m,a[10005],b[10005],c[10005];
    int main(){
    	scanf("%d%d",&n,&m);
    	for(int i=1;i<=n;++i){
    		scanf("%d%d%d",&a[i],&b[i],&c[i]);
    		q.push((heapnode){i,1,(long long)a[i]+b[i]+c[i]});
    	}
    	bool space=false;
    	while(m--){
    		heapnode p=q.top();q.pop();
    		if(space)putchar(' ');else space=true;
    		printf("%lld",p.ans);
    		++p.x;
    		p.ans=a[p.num]*p.x*p.x+b[p.num]*p.x+c[p.num];
    		q.push(p);
    	}
    	puts("");
    	return 0;
    }
    
  • 相关阅读:
    Intramart Service一览
    标签库列表
    CSS Expression用法总结
    URI,URL,URN的区别
    JSon数据查询Jlinq
    ie6,ie7兼容性总结
    实例说明扩展JQuery方式
    Android中的Parcel和Parcelable
    absolute绝对定位的非绝对定位用法
    [转载] 默认Web字体样式
  • 原文地址:https://www.cnblogs.com/Mrsrz/p/7402734.html
Copyright © 2011-2022 走看看