玲珑杯1096 萌萌哒的第一题

来源:互联网 发布:数据库集群是啥意思 编辑:程序博客网 时间:2024/05/16 18:44

有一批n个数据需要通过rpc调用获取信息,为了加快速度,我们想要把n个数据平均分成若干份,每份的数据量为x(x可以整除n),假设一次rpc调用所需要的时间为a+b*x^2(其中a、b为常数),那么当给出a、b和n的时候,请求出一个x使得总时间最少,若有多个x满足,请输出最小的x。

INPUT
输入数据包含多组数据(<=15)。每一组只有一行三个整数a、b(1 <= a, b <= 10^6)和n(1 <= n <= 10 ^ 6)
OUTPUT
每组数据输出一行一个数,题目要求的x。
SAMPLE INPUT
2 2 3
2 1 3
SAMPLE OUTPUT
1
1
记录每个x所花费的总时间(n/x)*(a+b*x*x),记录x,放到优先队列里,读出第一个就肯定符合条件
#include<iostream>#include<functional>#include<queue>#include<cstdio>using namespace std;struct node{long long  x;long long  value;friend bool operator < (node n1,node n2){if(n1.value == n2.value)    return n1.x > n2.x;else    return n1.value > n2.value;}};int main(){long long  a,b,n;long long  i;node D;priority_queue<node>qn;while(scanf("%lld%lld%lld",&a,&b,&n)!=EOF){        while(!qn.empty()){            qn.pop();        }for(i=1;i<=n;i++){    if(n%i==0){        D.value=n/i*(a+b*i*i);        D.x=i;        qn.push(D);    }} D=qn.top(); printf("%lld\n",D.x);}}


0 0
原创粉丝点击