小P的强力值

小P的强力值

时间限制:10000ms

单点时限:1000ms

内存限制:256MB

描述

小Hi在虚拟世界中有一只小宠物小P。小P有K种属性,每种属性的初始值为Ai。小Ho送给了小Hi若干颗药丸,每颗药丸可以提高小P指定属性1点。通过属性值,我们可以计算小P的强力值=(C1(1/B1))*(C2(1/B2))*...*(CK(1/BK)),其中Ci为小P第i项属性的最终值(Ai+药丸增加的属性)。 已知小Ho送给小Hi的药丸一共有N颗,问小P的强力值最高能够达到多少?

输入

第一行包含两个整数N,K,分别表示药丸数和属性种数。

第二行为K个整数A1 - AK,意义如前文所述。

第三行为K个整数B1 - BK,意义如前文所述。

对于30%的数据,满足1<=N<=10, 1<=K<=3

对于100%的数据,满足1<=N<=100000, 1<=K<=10

对于100%的数据,满足1<=Ai<=100, 1<=Bi<=10

输出

输出小P能够达到的最高的强力值。

只要你的结果与正确答案之间的相对或绝对误差不超过千分之一,都被视为正确的输出。

样例输入
5 2
1 1
3 2
样例输出
2.88分析:对答案取log后发现其实乘法变成了加法,然后优先队列模拟一下即可;代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define vi vector<int>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ll long long
#define pi acos(-1.0)
#define pii pair<int,int>
const int maxn=1e5+10;
const int dis[4][2]={{0,1},{-1,0},{0,-1},{1,0}};
using namespace std;
ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p%mod;p=p*p%mod;q>>=1;}return f;}
int n,m,k,t;
double ans;
struct node
{
    int x,y,id;
    bool operator<(const node&p)const
    {
        return 1.0/y*(log(x+1)-log(x))<1.0/p.y*(log(p.x+1)-log(p.x));
    }
}a[maxn];
priority_queue<node>p;
int main()
{
    int i,j;
    scanf("%d%d",&n,&k);
    rep(i,0,k-1)scanf("%d",&a[i].x),a[i].id=i;
    rep(i,0,k-1)scanf("%d",&a[i].y);
    rep(i,0,k-1)p.push(a[i]);
    rep(i,0,n-1)
    {
        node q=p.top();
        p.pop();
        q.x++,a[q.id].x++;
        p.push(q);
    }
    ans=1.0;
    rep(i,0,k-1)ans=ans*pow(a[i].x,1.0/a[i].y);
    printf("%.7f\n",ans);
    //system("pause");
    return 0;
}

时间: 2024-10-07 04:50:50

小P的强力值的相关文章

微信小程序传值取值的几种方法

一,列表index下的取值 实现方式是:data-index="{{index}}"挖坑及e.currentTarget.dataset.index来填坑即可 1.1生成值 <image src="../../../images/icon_delete.png" /><text>删除</text> //在删除图标与文字添加data-index="{{index}}"自定义属性以及绑定点击事件bindtap=&q

微信小程序获取自定义属性值

写小程序的时候用到了自定义属性,特地来记录一下 特别是这个坑,必须得说一说 wxml <view class='box' bindtap='getValue'> <view class='first' data-num="1024" data-name="张三">第一个view</view> <view class='second' data-age="2017" data-con="李四&qu

[小Trick]哈希值结构体

struct hashv { int len; ull val; hashv(char c) { val = c, len = 1; } hashv() : len(0), val(0) {} hashv operator+(hashv b)const { hashv ret; ret.len = len + b.len; ret.val = val + cf[len]*b.val; return ret; } bool operator==(hashv b)const { return len

扫描仪扫描文件处理-ABBYY生成小体积黑白二值化PDF

禁止所有预处理选项: PDF保存选项: 保存提示(选择"保存为仅图像PDF"):

小程序修改数组的值的写法/修改字符串的值的写法

原文地址:https://www.cnblogs.com/antyhouse/p/9337494.html

【会员卡、积分、优惠券、储值】小程序营销组件设计指南

为了领取小程序营销组件使用名额,我!也!是!拼!了!  小程序会员卡.优惠券.积分.储值(分享推荐) 即速应用 - 技术支持 一.小程序会员卡:小程序会员卡可设置会员权益,定制小程序会员相关优惠规则 二.小程序优惠券:小程序优惠劵可自定义样式,设计美观大方哦! 三.小程序积分:小程序积分商城,积分换购等活动,让每一次消费都更有意思! 四.小程序储值:小程序内部储值消费,这个有点屌哦! 参与体验小程序最新营销功能组件,加入小程序活动QQ群:546881520 名额有限,帮我推荐一下哦!领取名额后可

第一本的java 的小总结

1.Java常见的注释有哪些,语法是怎样的? 1)单行注释用//表示,编译器看到//会忽略该行//后的所文本  2)多行注释/* */表示,编译器看到/*时会搜索接下来的*/,忽略掉/* */之间的文本.  3)文档注释用/** */表示,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档. 1)单行注释. // 注释的内容 2)多行注释. /* 注释的内容 */ 3)文档注释. /** 注释的内容 */ 2.java常

网络通信之 字节序转换原理与网络字节序、大端和小端模式

原文地址:http://www.cnblogs.com/fuchongjundream/p/3914770.html 一.在进行网络通信时是否需要进行字节序转换? 相同字节序的平台在进行网络通信时可以不进行字节序转换,但是跨平台进行网络数据通信时必须进行字节序转换. 原因如下:网络协议规定接收到得第一个字节是高字节,存放到低地址,所以发送时会首先去低地址取数据的高字节.小端模式的多字节数据在存放时,低地址存放的是低字节,而被发送方网络协议函数发送时会首先去低地址取数据(想要取高字节,真正取得是低

[ucgui] 对话框2——小窗口初始化与消息响应

>_<" 上一节已经说过,创建过得窗口虽然可见,但是它们是以 “空”的形式出现的.这是因为对话框过程函数尚未包含初始化单个元素的代码.小工具的初始值.由它们所引起的行为以及它们之间的交互作用都需要在对话框过程中进行定义.这里在过程函数的WM_INIT_DIALOG消息下实现对小窗口初始化,然后在WM_NOTIFY_PARENT消息下实现对小工具的响应~ 1 /***************************************************************