当前位置: 首页 > article >正文

UVA11021 Tribles

Tribles - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

本题可以好好读读题,读输入那几个,我理解错题意还进行大量思考,可恶。。(我以为输入那几个是每种生物生或死的概率。非常低级的错误。)

题意:

开局给若干个生物,这个生物会在本回合发生以下行为后死掉:

p0 不生

p1 生1个

p2 生2个

p3 生3个

...

(这些概率p之和为1)

样例解释:

第一轮就得死光,0.33不生就死光了。

解法——dp:

我们设 f [ i ] 为开局一个生物,第 i 天内全部死光的期望。

我们求开局k个,m天,所以 ( f [m]  ) ^ k即可。

对于 f [ i ] 我们可以这样表示: (动态规划)(全概率公式(其实就是范围内所有情况的概率加起来))

f[ i ] = p0 + p1*f[ i-1] + p2*(f[ i-1] ^ 2) + ....

这个其实映射的是开局,

开局死,p0,期望加上

开局是p1 ,那下一轮只有一个,而这个需在 i - 1天内死掉,所以乘以期望f [ i - 1]

(一共 i 天嘛,已经过了1天了,剩下 i - 1天)

开局是p2 , 那下一轮有两个,这两个都需在 i -1天内死掉,所以乘以 f[ i-1] * f[ i-1]

...

现在应该可以欣赏洛谷题解了。

代码:

关于初始化,可以看样例解释,第1天f[ 1 ]就是p0.

double ksm(double x, int y)
{
	if (x == 1) return 1;
	double res = 1, base = x;
	while (y) {
		if (y & 1) res = res * base;
		base = base * base;
		y >>= 1;
	}
	return res;
}

int n, k, m;
double arr[10005];
double sum[1005];

void solve(int ca)
{
	cin >> n >> k >> m;
	for(int i = 0; i < n; i++)
	{
		cin >> arr[i];
	}
	double ans = 1;
	vector<double>f(m + 1);
	f[1] = arr[0];
	for (int i = 2; i <= m; i++)
	{
		f[i] = arr[0];
		for (int j = 1; j < n; j++)
		{
			f[i] += arr[j] * ksm(f[i - 1], j);
		}
	}
	printf("Case #%d: %.7lf\n", ca, ksm(f[m],k));
}
signed main()
{
	//ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t = 1;
	cin >> t;
	for (int i = 1; i <= t; i++)
	{
		solve(i);
	}
	return 0;
}

 


http://www.kler.cn/a/234814.html

相关文章:

  • Java-Redisson分布式锁+自定义注解+AOP的方式来实现后台防止重复请求扩展
  • 【Elasticsearch入门到落地】1、初识Elasticsearch
  • HTMLCSS: 实现可爱的冰墩墩
  • 游戏引擎学习第五天
  • 原生 JavaScript基本内容和常用特性详解
  • js-将JavaScript对象或值转换为JSON字符串 JSON.stringify(this.SelectDataListCourse)
  • 腾讯云4核8G服务器价格,性能如何?
  • Linux操作系统基础(九):Linux用户与权限
  • 字符串的解码--leetcode 394
  • .NET Core 3 foreach中取索引index
  • 《动手学深度学习(PyTorch版)》笔记7.3
  • 【Linux技术宝典】Linux入门:揭开Linux的神秘面纱
  • Python requests模块 快速入门 这篇就够了
  • 中国电子学会2019年12月份青少年软件编程Scratch图形化等级考试试卷三级真题(选择题、判断题)
  • 导入jar包的办法,若Maven报日志错误,Cannnot resolve XXXXX.jar
  • Springboot+vue的社区养老服务平台(有报告)。Javaee项目,springboot vue前后端分离项目
  • leetcode——滑动窗口题目汇总
  • python中的数组和list的异同
  • C语言之随心所欲打印三角形,金字塔,菱形(倒金字塔)
  • Go语言每日一练——链表篇(五)
  • Spring Cloud Hystrix 参数配置、简单使用、DashBoard
  • vim 启用鼠标复制粘贴
  • LeetCode Python - 9.回文数
  • IP地址如何保护网络安全
  • 自然语言处理(NLP)—— 基本概念
  • ThreeDPose