题意

有 \(n\) 个怪兽,\(k\) 种装备。最开始每个装备的等级都是 1 。每打完一个怪兽就会随机掉落一个装备。

随机的方式是,先等概率随机一个装备种类,设当前这个装备的等级为 \(t\) ,那么再在 \([1,t+1]\) 中随机一个装备等级。

我们会在这两个装备中选择等级高的那个获得,另一个卖掉,得到等级数量的金币。

求最后金币的期望值。需要误差在 \(10^{-9}\) 以内。

\(n\le 10^5,k\le 100\) 。

分析

显然 \(k\) 个装备是等价的,所以直接算一个的情况就行了。

我们要求的是总金币数量的期望,分成每次操作完之后的得到金币期望数量和来计算。

可以发现一个性质:若当前装备的等级为 \(x\) ,那么一次操作完后期望得到的金币数量为 \(\frac{x}{x+1}+\frac x 2\) 。

现在问题就变成计算每次操作前的装备等级 \(x\) 的期望和 \(\frac x {x+1}\) 的期望。

很容易用一个 \(O(n^2)\) 的dp来计算进行完前 \(i\) 次操作后装备等级为 \(j\) 的概率,然后就可以得到上面两个东西的期望值,即可算出答案。

显然会超时。然后就不会了。

注意到,有一个误差的阈值,那么不如看看能不能减少一些情况。可以发现,当装备等级为 \(x\) 的时候,升级的概率为 \(\frac 1 {k(x+1)}\) ,所以升级的期望步数为 \(k(x+1)\) ,因此升级到 \(x\) 级的期望步数 \(f(x)\sim kx^2\) 。

也就是说,只需要计算大概 \(\sqrt n\) 左右的等级即可!

复杂度为 \(O(n\sqrt n)\) ,空间用滚动数组优化。

代码

#include<bits/stdc++.h>
using namespace std;
typedef double lb;
const int maxn=1e5+1;
const int thel=620,maxl=thel+1;
int n,k,m;
lb ok,mk,h[maxl],d[maxn],o[maxn],ans=0;
lb yp[maxl],y[maxl];
int main() {
#ifndef ONLINE_JUDGE
freopen("test.in","r",stdin);
#endif
cin>>n>>k;
m=min(n,thel);
ok=1.L/k,mk=1.L-ok;
for (int i=1;i<=thel;++i) yp[i]=(lb)i/(i+1),y[i]=1.L/i;
h[1]=1;
d[0]=1,o[0]=0.5;
for (int i=1;i<n;++i) {
for (int j=m;j;--j) (h[j]*=ok*yp[j]+mk)+=h[j-1]*y[j]*ok;
for (int j=1;j<=m;++j) d[i]+=h[j]*j,o[i]+=h[j]*yp[j];
}
for (int i=1;i<=n;++i) ans+=d[i-1]/2+o[i-1];
cout<<fixed<<setprecision(12)<<ans<<endl;
return 0;
}

Codeforces 464D-World of Darkraft - 2的更多相关文章

  1. 【Codeforces 464D】World of Darkraft - 2

    Codeforces 464 D 首先我们知道这K个装备是互不干扰的,就是说如果一个装备升级了或者卖掉了,不会对其它装备的挣到的钱产生任何影响.所以我们就考虑单独处理某一个装备挣到的钱. 那么就设\( ...

  2. Codeforces 138D World of Darkraft(Multi-Nim)

    [题目链接] http://codeforces.com/problemset/problem/138/D [题目大意] H*W的棋盘中每个点都是L.R.X三者之一,两人轮流选一个点, 若为L则向左下 ...

  3. Codeforces 138D World of Darkraft

    有一个n*m 的棋盘,每个点上标记了L,R,X 中的一个每次能选择一个没有被攻击过的点(i,j),从这个点开始发射线,射线形状为:1. 若字符是 L,向左下角和右上角发,遇到被攻击过的点就停下来2. ...

  4. Codeforces 1321E World of Darkraft: Battle for Azathoth

    题意 有\(n\)个武器,第\(i\)个武器攻击力为\(a_i\),价值\(ca_i\). 有\(m\)个防具,第\(i\)个防具防御力为\(b_i\),价值\(cb_i\). 有\(p\)个怪,第\ ...

  5. 2018省赛赛第一次训练题解和ac代码

    第一次就去拉了点思维很神奇的CF题目 2018省赛赛第一次训练 # Origin Title     A CodeForces 607A Chain Reaction     B CodeForces ...

  6. World of Darkraft(codeforces 138D)

    题意:有一个 n × m 的棋盘,每个点上标记了 L; R; X 中的一个 每次能选择一个没有被攻击过的点 (i; j),从这个点开始发射线,射线形状为: 1. 若字符是 L,向左下角和右上角发,遇到 ...

  7. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  8. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  9. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

随机推荐

  1. ASP.NET Core 中 HttpContext 详解与使用 | Microsoft.AspNetCore.Http 详解

    笔者没有学 ASP.NET,直接学 ASP.NET Core ,学完 ASP.NET Core MVC 基础后,开始学习 ASP.NET Core 的运行原理.发现应用程序有一个非常主要的 “传导体” ...

  2. (.DS_Store)避免多人提交代码到GitHub上起冲突

    在多人合作的项目里,git pull origin master执行完之后出现以下问题: Auto-merging .DS_Store CONFLICT (content): Merge confli ...

  3. 2017-2018-2 20155229《网络对抗技术》Exp1:逆向及Bof基础实践

    逆向及Bof基础实践 实践基础知识 管道命令: 能够将一个命令的执行结果经过筛选,只保留需要的信息. cut:选取指定列. 按指定字符分隔:只显示第n 列的数据 cut -d '分隔符' -f n 选 ...

  4. 【Qt】QLabel实现的圆形图像

    本篇只描述圆形图像的两种实现方式,动态阴影边框如下: [Qt]QLabel之动态阴影边框 目前实现的效果如下: 左右两边实现的方式不同: 右边比较简单 min-width: 100px; max-wi ...

  5. SSISDB5:使用TSQL脚本执行Package

    SSISDB 系列随笔汇总: SSISDB1:使用SSISDB管理Package SSISDB2:SSIS工程的操作实例 SSISDB3:Package的执行实例 SSISDB4:当前正在运行的Pac ...

  6. 基于.NET Standard的分布式自增ID算法--Snowflake

    概述 本篇文章主要讲述分布式ID生成算法中最出名的Snowflake算法.搞.NET开发的,数据库主键最常见的就是int类型的自增主键和GUID类型的uniqueidentifier. 那么为何还要引 ...

  7. Linux 僵尸进程

    Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态.例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止.如果子进 ...

  8. ELK安装部署

    一.ELK简介 ELK是Elasticsearch.Logstash.Kibana的简称,这三者是核心套件,但并非全部.Elasticsearch是实时全文搜索和分析引擎,提供搜集.分析.存储数据三大 ...

  9. cocos2d-x学习之路(三)——精灵与动作

    这里我们来看看所有游戏引擎中都会出现的一个重要的概念——精灵

  10. 《Pro SQL Server Internals, 2nd edition》中CHAPTER 7 Designing and Tuning the Indexes中的Clustered Index Design Considerations一节(译)

    <Pro SQL Server Internals> 作者: Dmitri Korotkevitch 出版社: Apress出版年: 2016-12-29页数: 804定价: USD 59 ...