51nod 1836 战忽局的手段 (期望)
Description
众所周知,有一个神秘的组织——战忽局,在暗中保护着我们。在局中任职的官员都有着极强的忽悠技巧,不只能用预言,还能用往事忽悠人。如今某外星间谍已经获得了战忽局曾经参与的n次事件的资料,局座发现了这件事,于是决定再次用忽悠来保证战忽局的安全。局座将发表m次演讲,每一天他都会从n事件中等概率地挑选一件混淆众人,由于局座每天很忙,不能把之前将的事件都记录下来,因此他可能会重复选择某一件事。现在局座想知道,m次演讲过后,期望能使多少事件混淆众人。
Input
第一行一个整数T(1<=T<=1000),表示数据组数。接下来T行每行两个正整数n,m(1<=n,m<=1e18)分别表示事件数和局座演讲的次数。
Output
对于每组数据输出一行一个实数ans,表示局座在m次演讲之后期望混淆众人的事件数,你输入的数和标准答案的相对误差不超过1e-6视为正确。
Input示例
3
2 2
10 100000
3 2
Output示例
1.5000000
10.0000000
1.6666667
思路
定义 fx f_x 为 n n 个事件,忽悠 xx 次的期望事件数。
显然, fx=fx−1+(1−fx−1n)=1+n−1nfx−1 f_x=f_{x-1}+(1-\frac{f_{x-1}}{n})=1+\frac{n-1}{n}f_{x-1} 。
于是构造出矩阵:
\begin{pmatrix} f_1 & 1 \\\\ 0 & 0 \end{pmatrix} \times \begin{pmatrix} \frac{n-1}{n} & 0 \\\\ 1 & 1 \end{pmatrix}^{m-1}
用快速幂简单写一下就好了,其中 f1=1 f_1=1 。
注意 long double
貌似精度也不够,可以用 __float128
。
AC 代码
#include<bits/stdc++.h>
#include<quadmath.h>
#define IO ios::sync_with_stdio(false);\cin.tie(0);\cout.tie(0);
using namespace std;
typedef long long LL;
typedef __float128 LB;
const int maxn = 1e8+10;struct node
{LB mp[2][2];
} init,res;struct node Mult(struct node x,struct node y)
{struct node tmp;for(int i=0; i<2; i++)for(int j=0; j<2; j++){tmp.mp[i][j]=0;for(int k=0; k<2; k++)tmp.mp[i][j]+=x.mp[i][k]*y.mp[k][j];}return tmp;
}struct node expo(struct node x, LL k)
{struct node tmp;memset(tmp.mp,0,sizeof(tmp.mp));tmp.mp[0][0] = tmp.mp[1][1] = 1;while(k){if(k&1) tmp=Mult(tmp,x);x=Mult(x,x);k>>=1;}return tmp;
}void solve(LL n,LL m)
{init.mp[0][0] = LB(n-1) / n;init.mp[0][1] = 0;init.mp[1][0] = 1;init.mp[1][1] = 1;res = expo(init,m-1);cout<<fixed<<setprecision(12)<<double(res.mp[0][0]+res.mp[1][0])<<endl;
}int main()
{IO;int T;cin>>T;while(T--){LL n,m;cin>>n>>m;solve(n,m);}return 0;
}
51nod 1836 战忽局的手段 (期望)相关推荐
- 51nod 1836战忽局的手段(期望+矩阵快速幂)
战忽局的手段 n n n个事件, m m m次演讲 定义 d p [ i ] dp[i] dp[i]为 i i i次演讲的期望次数 d p [ 1 ] = 1 dp[1]=1 dp[1]=1 d p ...
- 51nod 1836 战忽局的手段(期望+矩阵快速幂)
众所周知,有一个神秘的组织--战忽局,在暗中保护着我们.在局中任职的官员都有着极强的忽悠技巧,不只能用预言,还能用往事忽悠人.如今某外星间谍已经获得了战忽局曾经参与的n次事件的资料,局座发现了这件事, ...
- 51nod 1836 战忽局的手段 矩阵乘法
题意 众所周知,有一个神秘的组织--战忽局,在暗中保护着我们.在局中任职的官员都有着极强的忽悠技巧,不只能用预言,还能用往事忽悠人.如今某外星间谍已经获得了战忽局曾经参与的n次事件的资料,局座发现了这 ...
- 51nod 1836:战忽局的手段(期望)
题目链接 公式比较好推 精度好难搞啊@_@ 下面记笔记@_@ ****在CodeBlocks中,输出double型变量要使用%f (参见http://bbs.csdn.net/topics/39193 ...
- 51nod 1836 战忽局的手段
设 f(m) 表示m次演讲后忽悠的期望,那么很容易得出: f(m)=f(m-1)+1*(n-f(m-1))/n 整理得到 f(m)-n=(n-1)/n*(f(m-1)-n) 公式有了,然后就是卡精度问 ...
- 51nod 1836:战忽局的手段
51nod 1836:战忽局的手段 题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1836 矩阵快速幂 从题目 ...
- 51nod算法马拉松20 C、战忽局的手段
战忽局的手段 基准时间限制:2 秒 空间限制:262144 KB 分值: 80 众所周知,有一个神秘的组织--战忽局,在暗中保护着我们.在局中任职的官员都有着极强的忽悠技巧,不只能用预言,还能用往事忽 ...
- 【51Nod1836】战忽局的手段
众所周知,有一个神秘的组织--战忽局,在暗中保护着我们.在局中任职的官员都有着极强的忽悠技巧,不只能用预言,还能用往事忽悠人.如今某外星间谍已经获得了战忽局曾经参与的n次事件的资料,局座发现了这件事, ...
- 战忽局总局影部部长赞了乡村振兴战略下传统村落文化旅游设计,来自许少辉博士的视频消息中心
战忽局总局影部部长赞了乡村振兴战略下传统村落文化旅游设计,来自许少辉博士的视频消息中心
最新文章
- 成长型思维模式Not yet
- 【R语言-20行代码】牛顿迭代法求伽马函数极大似然估计法的参数估计
- 聊聊成为大神路上的过程
- java异步servlet_Servlet 3.0 异步处理详解
- P1297 [国家集训队]单选错位 期望
- [机器学习-实践篇]贝叶斯算法
- Java中大数值是什么?数值想存多大存多大
- 计算机台式电源3c号,台式机电源选购经验:3C认证是必须的!(2)
- svd pca matlab,从SVD到PCA——奇妙的数学游戏
- html插入精灵,帮助插入超链接到CSS精灵代码..Java? HTML?
- visual studio 安装教程
- System V 共享内存 和 系列函数
- Exchange 2010安装各角色先决条件的Powershell
- 如何制作出色的R可重现示例
- [转载]C#异步调用四大方法详解
- 【LeetCode】【数组】题号:*48,旋转图像
- 小学初中数据常用定理公式总结-------复习一下
- 解决“Could not build wheels for xx which use PEP 517 and cannot be installed directly“问题
- python颜色画线_matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
- 准确的找到BAT实习机会~我入职了腾讯