UVA11021 Tribbles
2024-10-07 23:28:15
题目大意:n个麻球,第一天有k个,麻球生命期为一天,临近死亡前会有i的几率生出Pi个麻球。问m天后麻球全部死亡概率
设f[i]表示i天后一个麻球全部死亡的概率
有f[1] = P0
f[i] = P0 + P1 * f[1] + P2 * f[2]^2 + ... + Pi * f[i]^i + ... +Pn * f[n] ^ n
即:一个麻球在第一天结束生i个麻球,i个麻球会从第二天开始执行第一天的麻球的行为,因此i天后全部死亡对第二天的麻球来说就是i-1天后全部死亡。由于麻球死亡相互独立,只需i次方即可
最终答案f[m]^k
蛇皮自己写的pow被卡精度
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <vector>
#include <cmath>
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))
#define abs(a) ((a) < 0 ? (-1 * (a)) : (a))
inline void swap(int &a, int &b)
{
long long tmp = a;a = b;b = tmp;
}
inline void read(int &x)
{
x = ;char ch = getchar(), c = ch;
while(ch < '' || ch > '') c = ch, ch = getchar();
while(ch <= '' && ch >= '') x = x * + ch - '', ch = getchar();
if(c == '-') x = -x;
}
const int INF = 0x3f3f3f3f;
const int MAXN = + ;
int t,n,k,m;
double p[MAXN], dp[MAXN];
/*double pow(double a, int b)
{
double r = 1, base = a;
for(;b;b >>= 1)
{
if(b & 1) r *= base;
base *= base;
}
return r;
}*/
int main()
{
read(t);
int ca = ;
for(;t;-- t)
{
++ ca;
memset(dp, , sizeof(dp));
read(n), read(k), read(m);
-- n;
for(register int i = ;i <= n;++ i) scanf("%lf", &p[i]);
dp[] = p[];
for(register int i = ;i <= m;++ i)
for(register int j = ;j <= n;++ j)
dp[i] += p[j] * pow(dp[i - ], j);
printf("Case #%d: %.7lf\n", ca, pow(dp[m], k));
}
return ;
}
UVA11021
最新文章
- AutoMapper(七)
- ORACLE使用GV_$TEMP_SPACE_HEADER统计临时表空使用情况不准确的问题
- LeetCode-62-Unique Paths
- AR增强现实特点、关键技术和应用
- 《算法导论》习题解答 Chapter 22.1-2(邻接矩阵与链表)
- 苹果搜索广告后台大揭秘,最全最细致详解,手把手设置教程「后附官方视频」-b
- Android内核驱动程序的编写和编译过程
- mui开发app之js将base64转图片文件
- idea的一揽子工程
- JFile的导入xlsx与xls
- WAS ND V6下配置IHS V6
- linux进程管理之进程创建
- Kde桌面的Mac化
- 在Linux下使用gcc编译mesa文件报undefined reference to symbol &#39;sin@@GLIBC_2.2.5和DSO missing from command line两个错误的解决方案
- 剑指Offer 56. 删除链表中重复的结点 (链表)
- gridview导excel及解决导出中文乱码的方法
- Real Time Rendering 1
- 从零开始写一个武侠冒险游戏-0-开发框架Codea简介
- OpenStack中的Multipath faulty device的成因及解决(part 1)
- cnn 滤波