CodeForces 476 B.Dreamoon and WiFi(概率)

本文介绍了一个计算两个移动序列终点相同概率的问题。通过分析移动序列中正向、负向及不确定移动的数量,利用组合数学原理计算出概率。给出了完整的C++实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

给出一个移动序列,+表示往正方向移动一单位,表示往负方向移动一单位,然后给出一个一些位置未确定的移动序列,?表示到该步会等概率往两个方向移动一单位,问第二个移动序列终点和第一个移动序列终点相同的概率,起点均在原点

Input

两个长度不超过10的移动序列

Output

输出两个序列终点相同的概率

Sample Input

+-+-
+-??

Sample Output

0.500000000000

Solution

设第一个移动序列的终点为pos,第二个移动序列中+n1个,n2个,?n3个,设这些问号中有x需要变成+,有y个需要变成,则有x+y=n3,x+n1yn2=pos,解得x=n3+n2n1+pos2,y=n3n2+n1pos2,只要x,y为非负整数则有解,概率为Cxn32n3

Code

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
const int INF=0x3f3f3f3f,maxn=100001;
char a[maxn],b[maxn];
double C(int n,int m)
{
    double ans=1;
    for(int i=1;i<=m;i++)ans=ans*(n-m+i)/i;
    return ans;
}
int main()
{
    while(~scanf("%s%s",a,b))
    {
        int len=strlen(a);
        int pos=0;
        for(int i=0;i<len;i++)
            if(a[i]=='+')pos++;
            else pos--;
        int n1=0,n2=0,n3=0;
        for(int i=0;i<len;i++)
            if(b[i]=='+')n1++;
            else if(b[i]=='-')n2++;
            else n3++;
        int x=pos+n2-n1+n3,y=n3+n1-n2-pos;
        if(x<0||y<0||x&1||y&1)printf("0\n");
        else
        {
            x/=2,y/=2;
            printf("%.10f\n",C(n3,x)/(1<<n3));
        }
    }
    return 0;
}
内容概要:本文档详细介绍了基于MATLAB实现的多头长短期记忆网络(MH-LSTM)结合Transformer编码器进行多变量时间序列预测的项目实例。项目旨在通过融合MH-LSTM对时序动态的细致学习和Transformer对全局依赖的捕捉,显著提升多变量时间序列预测的精度和稳定性。文档涵盖了从项目背景、目标意义、挑战与解决方案、模型架构及代码示例,到具体的应用领域、部署与应用、未来改进方向等方面的全面内容。项目不仅展示了技术实现细节,还提供了从数据预处理、模型构建与训练到性能评估的全流程指导。 适合人群:具备一定编程基础,特别是熟悉MATLAB和深度学习基础知识的研发人员、数据科学家以及从事时间序列预测研究的专业人士。 使用场景及目标:①深入理解MH-LSTM与Transformer结合的多变量时间序列预测模型原理;②掌握MATLAB环境下复杂神经网络的搭建、训练及优化技巧;③应用于金融风险管理、智能电网负荷预测、气象预报、交通流量预测、工业设备健康监测、医疗数据分析、供应链需求预测等多个实际场景,以提高预测精度和决策质量。 阅读建议:此资源不仅适用于希望深入了解多变量时间序列预测技术的读者,也适合希望通过MATLAB实现复杂深度学习模型的开发者。建议读者在学习过程中结合提供的代码示例进行实践操作,并关注模型训练中的关键步骤和超参数调优策略,以便更好地应用于实际项目中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值