题目链接:Codeforces Round #273 (Div. 2) B. Dreamoon and WiFi 题意:“”表示前进1个单位,“-”表示后退1个单位,问以0为起点经过S1,S2两个命令后达到的位置相同的概率。 思路:统计“”和“-”的数量。如果S2中的“”或者“-”比S1中的多,概率是0。
题目链接:Codeforces Round #273 (Div. 2) B. Dreamoon and WiFi
题意:“+”表示前进1个单位,“-”表示后退1个单位,问以0为起点经过S1,S2两个命令后达到的位置相同的概率。
思路:统计“+”和“-”的数量。如果S2中的“+”或者“-”比S1中的多,概率是0。其他条件下,形成的是超几何分布。
AC代码:
#include <stdio.h>
#include <string.h>
int fac(int n,int m)
{
int i,s=1;
for(i=m;i>m-n;i--)
s*=i;
return s;
}
int C(int n,int m)
{
int a=fac(n,m);
int b=fac(n,n);
return a/b;
}
double ipow(double n,int p)
{
int i;
double s=1.0;
for(i=0;i<p;i++)
s*=n;
return s;
}
int main()
{
char s1[20],s2[20];
int len,i;
while(scanf("%s",s1)!=EOF)
{
len=strlen(s1);
int addsum,subsum;
addsum=subsum=0;
for(i=0;i<len;i++)
{
if(s1[i]=='+') addsum++;
else subsum++;
}
scanf("%s",s2);
int m=0,pos=0,sum;
for(i=0;i<len;i++)
{
if(s2[i]=='?') m++;
else if(s2[i]=='+') addsum--;
else subsum--;
}
if(addsum<0 || subsum<0)
printf("%.9lf\n",0);
else
{
if(addsum+subsum!=m)
printf("%.9lf\n",0);
else
{
double ans;
ans=ipow(0.5,m)*C(addsum,m);
printf("%.9lf\n",ans);
}
}
}
return 0;
}
/*
++++++++++
+++??++?++
--+++---+-
??????????
*/
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号