栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 2917 Splitting the Loot

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 2917 Splitting the Loot

#include <queue>#include <cstdio>using namespace std;const double eps = 1e-8;double total(priority_queue <double, vector<double>, greater<double> > pq, double r, double value = -1.0){    if(value > 0) pq.push(value);    while(pq.size() > 1) {        value = 0.0;        value += pq.top();        pq.pop();        value += pq.top();        pq.pop();        pq.push(r * value);    }    return pq.top();}int main(void){    int t;    scanf("%d", &t);    while(t--) {        int w, p, n, a;        double rr;        priority_queue <double, vector<double>, greater<double> > pq;        scanf("%d%d%d", &w, &p, &n);        rr = 100.0 / (100 - p);        for (int i = 0; i < n; i++) { scanf("%d", &a); pq.push(a);        }        if(total(pq, rr) > w + eps) printf("-1n");        else { double l = 0.0, r = w; while(r - l > eps) {     double m = (l + r) / 2.0;     if(total(pq, rr, m) > w) r = m;     else l = m; } printf("%lfn", l);        }    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号