ZOJ 3329 One Person Game [概率DP]

Cadence Virtuoso中运放GBW与相位裕度的精准提取方法 增益带宽积(GBW)和相位裕度(PM)是运算放大器稳定性与频率响应的核心指标,其本质源于开环传递函数的复数频域特性。理解AC仿真输出的复数频点数据结构(real+imag)是准确提取的前提;手动光标读数易受缩放、插值和人眼误差影响,导致±2%以上相对误差,无法满足流片级可追溯性要求。通过Waveform Calculator函数(如cross、interpolate、unwrapphase)进行向量化计算,可实现亚MHz级GBW定位与卷绕校正后的PM提取,支撑工艺角扫描、参数灵敏度分析及自动化signoff 阅读详情

Description

There is a very simple and interesting one-person game. You have 3 dice, namely Die1, Die2 and Die3. Die1 has K1 faces. Die2 has K2faces. Die3 has K3 faces. All the dice are fair dice, so the probability of rolling each value, 1 to K1, K2, K3 is exactly 1 / K1, 1 / K2 and 1 /K3. You have a counter, and the game is played as follow:

  1. Set the counter to 0 at first.
  2. Roll the 3 dice simultaneously. If the up-facing number of Die1 is a, the up-facing number of Die2 is b and the up-facing number of Die3 is c, set the counter to 0. Otherwise, add the counter by the total value of the 3 up-facing numbers.
  3. If the counter's number is still not greater than n, go to step 2. Otherwise the game is ended.

Calculate the expectation of the number of times that you cast dice before the end of the game.

Input

There are multiple test cases. The first line of input is an integer T (0 < T <= 300) indicating the number of test cases. Then T test cases follow. Each test case is a line contains 7 non-negative integers n, K1, K2, K3, a, b, c (0 <= n <= 500, 1 < K1, K2, K3 <= 6, 1 <= a <= K1, 1 <= b <= K2, 1 <= c <= K3).

Output

For each test case, output the answer in a single line. A relative error of 1e-8 will be accepted.

题意:

给出3个骰子,每个骰子的面数已知,并且对于每个骰子来说每一面出现的概率是相等的,当三个骰子分别为A,B,C时,计数器清0,否则加上三个骰子的点数和,问计数器大于N的期望投掷数。

解法:

假设DP[i]表示当前点数为i,达到大于N的状态的期望,那么DP[ >N ] =0

DP[I]=p*DP[0]+Σ (pk*dp[i+k]) +1

最后我们要解的便是dp[0],但是每一个dp[I]里面都含有了一个DP[0],我们需要把其前面的系数提取出来

设DP[I] = A[I] * DP[0] +B[I] 

那么DP[0]=A[0]*DP[0]+B[0]

推出DP[0]=B[0]/(1-A[0])

A[I]=Σ(A[I+k]*pk)+p

B[I]=Σ(B[I+K]*pk)+1.0

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<iostream>
#include<stdlib.h>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<bitset>
#pragma comment(linker, "/STACK:1024000000,1024000000")
template <class T>
bool scanff(T &ret){ //Faster Input
    char c; int sgn; T bit=0.1;
    if(c=getchar(),c==EOF) return 0;
    while(c!='-'&&c!='.'&&(c<'0'||c>'9')) c=getchar();
    sgn=(c=='-')?-1:1;
    ret=(c=='-')?0:(c-'0');
    while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
    if(c==' '||c=='\n'){ ret*=sgn; return 1; }
    while(c=getchar(),c>='0'&&c<='9') ret+=(c-'0')*bit,bit/=10;
    ret*=sgn;
    return 1;
}
#define inf 1073741823
#define llinf 4611686018427387903LL
#define PI acos(-1.0)
#define lth (th<<1)
#define rth (th<<1|1)
#define rep(i,a,b) for(int i=int(a);i<=int(b);i++)
#define drep(i,a,b) for(int i=int(a);i>=int(b);i--)
#define gson(i,root) for(int i=ptx[root];~i;i=ed[i].next)
#define tdata int testnum;scanff(testnum);for(int cas=1;cas<=testnum;cas++)
#define mem(x,val) memset(x,val,sizeof(x))
#define mkp(a,b) make_pair(a,b)
#define findx(x) lower_bound(b+1,b+1+bn,x)-b
#define pb(x) push_back(x)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;

double pa[1111];
double pb[1111];
int n,k1,k2,k3,a,b,c;
double p[111],pe;
int main(){
    tdata{
        scanff(n);scanff(k1);scanff(k2);scanff(k3);
        scanff(a);scanff(b);scanff(c);
        int tot=k1+k2+k3;
        mem(p,0);
        p[0]=1.0/double(k1*k2*k3);
        rep(i,1,k1)
        rep(j,1,k2)
        rep(k,1,k3){
            if(i==a&&j==b&&k==c)continue;
            int sum=i+j+k;
            p[sum]+=1.0/double(k1*k2*k3);
        }
        mem(pa,0);
        mem(pb,0);
        drep(i,n,0){
            rep(j,1,tot){
                pa[i]+=pa[i+j]*p[j];
                pb[i]+=pb[i+j]*p[j];
            }
            pa[i]+=p[0];
            pb[i]+=1.0;
        }
        double ans=pb[0]/(1.0-pa[0]);
        printf("%.15f\n",ans);
    }
    return 0;
}


阿里云百炼平台创建智能体-上传文档 阿里云百炼智能体-上传文档文件 阅读详情

相关推荐

告别设备管理器混乱!3分钟学会用STM32CubeMX+Zadig定制专属虚拟串口名称

本文详细介绍了如何利用STM32CubeMX和Zadig工具,为STM32的USB虚拟串口(VCP)定制专属设备名称,从而彻底解决多设备连接时设备管理器端口混乱的难题。通过修改产品字符串描述符并替换驱动,开发者可以在设备管理器中清晰识别不同开发板,显著提升调试效率,尤其适用于多设备协同的竞赛或项目开发场景。

a2b3c4d5e的博客 478

【概率DP】 ZOJ 3329 One Person Game

通道 题意:有三个骰子,分别有k1,k2,k3个面。每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和。当分数大于n时结束。求游戏的期望步数。初始分数为0 思路: 假设dp[i]表示拥有分数i到游戏结束的期望步数则 (1):dp[i]=SUM(p[k]*dp[i+k])+p[0]*dp[0]+1;//p[k]表示增加分数为k的概率,p[0]表示分数变为0的...

131

【STM32学习】(29)STM32实现595驱动三个数码管(标准库和HAL库实现)

我选用的单片机型号为:STM32F103系列 74LS595是一个串转并行输出的芯片,它能为单片机节省很多的IO口,应用场景广泛。 现要求三个数码管动态显示,常规设计都是并行实现,需要8个IO数据口,然后还需要3个IO片选数码管接口,这样大大占用了IO口,导致连接的外设变少。因此我们引入74LS595芯片。电路设计如下: 只需要三个共阴极数码管与三个595芯片级联即可完成,通过RCLK,SCK,SER三个IO即可完成对数码管的动态控制并显示。电路焊接的实物图如下: 要求完成功能:实现数.

XiaoCaiDaYong的博客 8264

ZOJ 3329 One Person Game (概率DP)

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3329 题目:抛掷3个骰子(分别共有k1,k2,k3个点),如果对应的点数分别是a,b,c那么就变成0,累加加上点数之和,直到score>n时结束。问投掷3个骰子的次数。 做完这题发现,原来,一般的概率DP的设计都是从后向前推导。 设dp[i]是分数为i的次数期

theArcticOcean 662

海豚调度器(dolphinscheduler)再次使用,添加钉钉预警

1,首先我们部署是海豚调度器 1.3.8版本,由于页面只有邮件预警,所以在了解源码的同时,需要添加钉钉预警 2,说明,这一块是同事搞的,不是我搞的,新版本的dolphinscheduler已经有了钉钉模块,只是新版本还没有发布 3,我们现在只是添加简单的钉钉预警,任务成功或者失败会发送邮件+钉钉 4,具体操作 找到最新的源码devhttps://github1s.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-alert/src/ma...

qq_31866793的博客 3083

【数据分析/商业分析】面试题整理——SQL专题

数据分析\商业分析—面试题整理 自己总结的SQL类的面试题 文章目录数据分析\商业分析—面试题整理1.新增用户2.活跃用户数量3.连续登录4.次(n)日留存5.每个科目下分数最高的两名学生

awater_17的博客 1859

ZOJ3329 One Person Game 概率dp

/* 题目描述:有三个骰子,每个上面的数值分别是1~K1 , 1 ~K2 , 1 ~K3,有一个计数器,其初始值为0,现在抛三枚 骰子,如果当前计数器的值加上这三枚骰子的点数和大于n,那么游戏结束,否则将计数器的值加上点数和后 游戏继续,但是,如果掷出的三枚骰子的值为a,b,c时,计数器的值清零,先问游戏中投掷骰子的期望是多少? 思路:设dp[

jijijix的博客 369

Xilinx平台SRIO介绍(二)SRIO IP核基础知识

使用SRIO IP核必须掌握的基础知识! 理解了这篇,剩下的只是代码罢了。

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 4万+

[ZOJ3329] One Person Game [概率DP]

题目描述 有三个骰子,分别有k1,k2,k3个面。 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和。 当分数大于n时结束. 求游戏的期望步数. 初始分数为0 表示已经有了 i 分, 到 n 的期望步数 发现 每个 f 都可以用 f[0] 来表示 不妨设, 带到上面 递推到最后一步时, 解出 f[0] 就是答案 #include<b...

FSYo 的博客 262

华为OD机试 - 项目规划 - 深度优先搜索dfs(Java 2024 C卷 100分)

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 1153

YOLOv11改进策略【损失函数篇】| 替换激活函数为Mish、PReLU、Hardswish、LeakyReLU、ReLU6

在卷积神经网络中,激活函数通过在神经网络中引入非线性,使网络能够学习和逼近复杂函数,从而处理复杂的模式识别与分类问题。

Limiiiing的博客 2786

zoj 3329 One Person Game(概率dp,期望)

One Person Game Time Limit: 1 Second      Memory Limit: 32768 KB      Special Judge There is a very simple and interesting one-person game. You have 3 dice, namely Die1, Die2 and Die3. Die1

WEYuLi的专栏 985

llama2-7b下载并转llama-2-7b-hf

④输入https://github.com/huggingface/transformers/blob/main/src/transformers/models/llama/convert_llama_weights_to_hf.py会下载 convert_llama_weights_to_hf.py 文件,我们需要用到这个文件将llama2-7b转成llama-2-7b-hf。③下载完之后是这四个文件,这里我是在windows操作系统中安装的WSL,没有linux操作系统,没办法。

wenling54321的博客 1030

[ZOJ3329]One Person Game(概率dp)

题目描述传送门题解令f(i)表示得分为i时到结束的期望 显然这道题>0的点都可以从0转移过来,0也可以从每一个>0的点转移过来 所以这题就应该画柿子了 f(i)=∑f(i+k)p(k)+f(0)P+1f(i)=\sum f(i+k)p(k)+f(0)P+1,其中p(i)表示掷出和为i的骰子的概率,P表示掷出a,b,c的概率 每一项都包含f(0),令f(i)=pa(i)f(0)+pb(i),那

zyf2000 574

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ZOJ 3329 One Person Game (概率DP)

题目: LINK

Napoleon 829

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

zoj 3329 One Person Game(有环的概率dp)

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3754 开始看错题意了,以为没翻到a,b,c时要在原来的基础上加a+b+c,按我的意思推出来一个公式,没想到样例还过了,简直无法debug。 公式很好推,设dp[i]表示当前为i分时到达目标状态需要投掷的期望,可转移到两个状态dp[0]和dp[i+k]。设转移

1168

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ZOJ3329 One Person Game(经典概率dp)

题目描述 There is a very simple and interesting one-person game. You have 3 dice, namely Die1, Die2 and Die3. Die1 has K1 faces. Die2 has K2 faces. Die3 has K3 faces. All the dice are fair dice, so the probability of rolling each value, 1 to K1, K2, K3 is exa

li_wen_zhuo的博客 452

ZOJ 3329 One Person Game 【概率DP,求期望】

题意:有三个骰子,分别有k1,k2,k3个面。 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和。 当分数大于n时结束。求游戏的期望步数。初始分数为0 设dp[i]表示达到i分时到达目标状态(即i = n)的期望,pk为投掷k分的概率, p0为回到0的概率则dp[i] = ∑(pk * dp[i + k]) + dp[0] * p0 + 1 ; 都和dp...

weixin_30347335的博客 130

ZOJ 3329 One Person Game (概率dp)

OJ题目:click here~~ 题目分析: 有一个计数器 , 初值为0。三个骰子 ,分别有k1, k2, k3面,每个骰子,每面向上的概率相等。给三个数a , b , c。 游戏如下:1,计数器初值设为0。  2,同时掷三个骰子,如果骰子1出现a , 骰子2出现b, 骰子3出现c, 则将计数器设为0,否则将三个数字的和加到计数器上。3,如果此时计数器的数字仍然不超过n , 则回到第2步 ,

918

【训练题19:概率DP】One Person Game | ZOJ3329

One Person Game | ZOJ3329 难度 6/106/106/10 有一说一,是一道经典概率DP题,个人感觉至少省赛题。 但是看其他博客都是随便秒过的 ??? 题意 你有三个骰子,分别有 K1,K2,K3K_1,K_2,K_3K1​,K2​,K3​面,每面投掷到的概率都相等,面上标号数字为 1∼Ki1\sim K_i1∼Ki​ 一开始,你的分数为000。 每轮:你同时投掷三个骰子,如果第一个骰子顶面为 aaa 面 , 第二个骰子顶面为 bbb 面, 第三个顶面骰子为 ccc 面 ,那么你的分

溢流眼泪的博客 356

zoj3329——One Person Game(概率DP)

ZOJ Problem Set - 3329 One Person Game Time Limit: 1 Second      Memory Limit: 32768 KB      Special Judge There is a very simple and interesting one-person game. You have 3 dice, namely Die1, Die2

JIA_char 750

zoj 3329 One Person Game 概率dp

题意:有三个骰子,每个点数1-k[i],甩到每个点数的几率为1/k[i]。 然后有a,b,c,如果第一个骰子投到a,二投到b,三投到c,那么分数清零,否者分数累计。问多少步,可以让分数大于n。 思路来自:http://www.cnblogs.com/jackge/archive/2013/05/21/3091839.html 做法:把n+1 到n+sumk 的dp 都清为0,因为他们不需要步数。 然后 dp [n]到dp[0] 中 dp[i] 的步数是为∑(dp[i+k]*p)+dp[0]*p+1,

万事屋 813

zoj 3329 One Person Game(概率dp)

题意:三个骰子,这三个骰子有K1、K2、K3个面,cnt最开始等于0,同时掷3个骰子,如果这三个骰子分别为a,b,c,那么cnt=0,否则cnt+=(a+b+c)。如果cnt 思路:最开始推完方程以后发现存在一个E(0)的常数,本来想用直接用dp[i]表示dp[i]-E[0],后来发现不行,因为最后边界的位置就错了。正确的姿势是把E(i)表示为E(i)=A[i]*E[0]+B[i],然后转化为求

绝望的乐园 606

ZOJ 3329 One Person Game(概率DP、求期望)

概率DP、求期望

请刷题2016 431

zoj 3329 One Person Game 概率dp

先吐槽几句真心给数学跪了 题意: 有三个均匀的骰子,分别有k1,k2,k3个面,初始分数是0, 当掷三个骰子的点数分别为a,b,c的时候,分数清零,否则分数加上三个骰子的点数和, 当分数>n的时候结束。求需要掷骰子的次数的期望。 题解: 设 E[i]表示现在分数为i,到结束游戏所要掷骰子的次数的期望值。 显然 E[>n] = 0; E[0]即为所求答案; E[i] =

u013087645的专栏 979

ZOJ 3329 One Person Game(概率DP,求期望)

参考: http://www.cnblogs.com/kuangbin/archive/2012/10/03/2710648.html http://blog.youkuaiyun.com/morgan_xww/article/details/6775853 本题通过代换系数,化简后求系数。 一般形成环的用高斯消元法求解。但是此题都是和dp[0]相关。所有可以分离出系数。 /* ZO

冰 862
上一篇: HDU ACM组队安排 [基础DP+打表]
下一篇: POJ 2096 Collecting Bugs [概率DP]
GrassTreeFlower
博客等级 码龄11年 14粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值