首页 > 其他分享 >Red is good

Red is good

时间:2024-05-28 10:33:06浏览次数:19  
标签:一张 good const int 位置 namespace Red

Description

桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付

出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。

Input

一行输入两个数R,B,其值在0到5000之间

Output

在最优策略下平均能得到多少钱。

解析

设计状态:\(f[i][j]\) 表示在 \(i\) 张红,\(j\) 张黑中选的期望得分。

此时抽到一张红的概率为 \(\frac{i}{i+j}\),抽到一张黑的概率为 \(\frac{j]{i+j}\)。

再加上之后 \(f[i-1][j]\) 或 \(f[i][j-1]\) 的期望就好啦。

#include<bits/stdc++.h>
using namespace std;
const int N = 5005;
int r,b;
double f[N][N],ans;

int main()
{
	scanf("%d%d",&r,&b);
	for(int i=1;i<=r;i++)
	{
		f[i][0]=i;
		for(int j=1;j<=b;j++)
			f[i][j]=max(0.0,(f[i-1][j]+1)*i/(i+j)+(f[i][j-1]-1)*j/(i+j));
	}
	printf("%.6lf\n",f[r][b]-0.0000005);
	return 0;
}

优化

卡空间,我们发现状态转移只涉及两个位置,即 \((i-1,j)\) 和 \((i,j-1)\)。

也就是当前这一阶段的上一个位置和上一个阶段的当前位置。

而遍历到当前位置时这一阶段的上一个位置已经被更新过了,这个位置还是上一个阶段的。而这刚好是我们要的。

因此二维数组可以压成一维。

#include<bits/stdc++.h>
using namespace std;
const int N = 5001;
int r,b;
double f[N];

int main()
{
	scanf("%d%d",&r,&b);
	for(int i=1;i<=r;i++)
	{
		f[0]=i;
		for(int j=1;j<=b;j++)
			f[j]=max(0.0,(f[j]+1)*i/(i+j)+(f[j-1]-1)*j/(i+j));
	}
	printf("%.6lf\n",f[b]-0.0000005);
	return 0;
}

标签:一张,good,const,int,位置,namespace,Red
From: https://www.cnblogs.com/ppllxx-9G/p/18217169

相关文章

  • Redis如何进行内存优化
    控制key的数量。当使用Redis存储大量数据时,通常会存在大量键,过多的键同样会消耗大量内存。Redis本质是一个数据结构服务器,它为我们提供多种数据结构,如hash,list,set,zset等结构。使用Redis时不要进入一个误区,大量使用get/set这样的API,把Redis当成Memcached使用。对于存储相同的......
  • redis的6.2.14的docker安装
    1.拉取镜像dockerpullredis:6.2.142.运行镜像sudodockerrun--nameredis-d-p6379:6379\-v/home/cy/soft/redis/data:/data\-v/home/cy/soft/redis/conf/redis-docker.conf:/usr/local/etc/redis/redis.conf\--privileged=true\redis:6.2.14redis-server/usr/lo......
  • Redis配置文件说明及主从配置
    目录1、redis.conf配置文件说明2、主服务器配置3、从机配置4、查看主从配置信息1、redis.conf配置文件说明daemonizeno--是否把redis-server启动在后台,默认是“否”。若改成yespidfile/var/run/redis.pid--当Redis以守护进程方式运行时,Redis默认会把pid写入/var......
  • 赶紧收藏!2024 年最常见 20道 Redis面试题(九)
    上一篇地址:赶紧收藏!2024年最常见20道Redis面试题(八)-CSDN博客十七、如何使用Redis做异步队列?使用Redis作为异步队列主要依赖于Redis的列表(list)数据结构,列表提供了原子的推入(push)和弹出(pop)操作,这使得它非常适合实现队列。以下是使用Redis实现异步队列的步骤:准备Red......
  • Springboot Redis 性能优化(基于 Lettuce)
    1.SpringbootRedis性能优化(基于Lettuce)1.1.为什么是Lettuce1.2.参数优化1.2.0.1.SpringbootRedis所有参数项1.2.1.最终参数配置1.SpringbootRedis性能优化(基于Lettuce)1.1.为什么是LettuceSpringboot2.x.x开始默认使用lettuce作为redis客户......
  • 前端程序员快速学会 Redis
    由于在学习Docker的过程中,使用到了Redis,但是不会,就快速补课一下Redis,以能会基础使用就够了,不求甚解。由于这篇会使用到上一篇文章Docker入门(一),没看的可以看看:前端程序员如何学习Docker(一)-掘金(juejin.cn),下面开始Redis入门:什么是Redis?官方说:"Redisisanin......
  • Shiro+Jwt+Redis
    如何整合Shiro+Jwt+Redis,以及为什么要这么做我个人认为①为什么用shiro:“Shiro+Jwt+Redis”模式和“单纯的shiro”模式相比,主要用的是shiro里面的登录认证和权限控制功能②为什么用jwt:“Shiro+Jwt”模式和“Shiro+Cookie”模式相比,后者的用户登录信息是存储在服务器的......
  • 如何远程访问Redis?
    远程访问Redis是一种常见的需求,特别是在分布式系统或跨地域网络中。通过远程访问,我们可以轻松地对远程的Redis数据库进行操作和管理。天联保障数据安全对于远程访问Redis的安全性问题,我们可以借助天联来保障数据的安全。天联是一种基于私有通道的远程访问解决方案,可以让异......
  • Spring学习:AllArgsConstructor、RequiredArgsConstructor注入bean
    @NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor(搭配@FieldDefaults、@NonFinal)的区别以及在springboot常用地方 注解解释、区别:@NoArgsConstructor:生成无参的构造方法。@AllArgsConstructor:生成该类下全部属性的构造方法。(主讲)@RequiredArgsConstructo......
  • Redis教程(十七):Redis的Redisson分布式锁
    Redis分布式锁 Redis分布式锁的主要作用是在分布式系统环境下提供一种机制,用于确保在同一时间只有一个进程(或线程)能够执行某个关键代码段或访问特定的资源。这主要用于控制对共享资源的并发访问,以避免因多个进程同时修改同一数据而导致的数据不一致或其他竞争条件问题。 ......