476B - Dreamoon and WiFi
2021/9/4 23:10:11
本文主要是介绍476B - Dreamoon and WiFi,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
链接:
https://codeforces.com/problemset/problem/476/B
题意:
给一个由 ’ + ’ 和 ’ - ’ 组成的串,为串s,+为向前1,-为向后1
给一个由 ’ + ’ , ’ - ’ 和 ’ ?’ 组成的串,为串t,+为向前1,-为向后1,?为50%+,50%为-
求执行t串后,位置结果和s串相同的概率
解:
dfs一下,暴力一下总数就行
实际代码:
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #define csh(a) memset(a,0,sizeof(a)) using namespace std; typedef long long int ll; const int N=1E1+5; char s[N];//原串 char t[N];//干扰串 ll ans=0;//原串目的 double anssum=0,sum=0; void dfs(ll mao,ll lg,ll z,ll f) { if(mao>lg) { if(z-f==ans) anssum++; sum++; } if(t[mao]=='+') dfs(mao+1,lg,z+1,f); if(t[mao]=='-') dfs(mao+1,lg,z,f+1); if(t[mao]=='?') { dfs(mao+1,lg,z+1,f); dfs(mao+1,lg,z,f+1); } } int main() { scanf("%s",s+1); scanf("%s",t+1); ll lgs=strlen(s+1); ll lgt=strlen(t+1); for(int i=1;i<=lgs;i++) { if(s[i]=='+') ans++; if(s[i]=='-') ans--; } dfs(1,lgt,0,0); //cout<<anssum/sum<<endl; double theans=anssum/sum; printf("%0.12lf\n",theans); }
限制:
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
这篇关于476B - Dreamoon and WiFi的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-19环境变量处理课程:新手入门教程
- 2024-09-19接口模块封装课程:新手入门指南
- 2024-09-19请求动作封装课程:新手入门教程
- 2024-09-19拖拽表格课程:新手入门指南
- 2024-09-19页面权限课程:新手必学的权限管理入门教程
- 2024-09-19如何正确主动登出课程:新手必读教程
- 2024-09-19Element-Plus课程:新手入门与初级教程
- 2024-09-19Token处理入门教程:新手必看指南
- 2024-09-19如何应对被动登出课程的情况:新手必读指南
- 2024-09-19打包优化课程:初学者的必备指南