codeforces 476B.Dreamoon and WiFi 解题报告

题目链接:http://codeforces.com/problemset/problem/476/B

题目意思:给出两个字符串str1, str2,其中,str1 只由 '+' 和 '-' 组成,而str2 由 '+','-'和'?'组成。初始点在原点0的位置,经过 str1 的变换最终会达到某一个位置,‘+'表示向右移动一个单位(+1),'-'即-1。str2 中 '?'的部分可以填入'+','-'其中一个符号。问能填充 '?' 的所有情况中,使得使用 str2 所有的操作,能到达   经过 str1 所有操作后到达的最终位置   的概率是多少。(额....比较拗口= =,俺的...表达能力果然不敢恭维- -!)

    首先,算出经过 str1 所有的操作后最终到达的位置,这个明显是确定的啦,没有 '?' 嘛。接着算出 str2 除 '?' 外到达的位置,剩下用深搜来填入 '?',统计等于最终位置的种数。最后用  这个种数 / 问号能填入的所有情况,就是答案啦!!!

    还有一些特判点,假如str2 没有问号,概率只有两种情况:1 或者 0。其他就要dfs算啦~~

    粗心过头,wa了两次: 无用%.12lf(又到考眼力的时候了= =) 还有调试 cnt 不记得注释了= =......

   

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 #include <algorithm>
 6 using namespace std;
 7 
 8 const int maxn = 10 + 5;
 9 char str1[maxn], str2[maxn];
10 int unknown, origin;
11 double cnt, fenmu;
12 
13 void dfs(int c, int cur)
14 {
15     if (c == unknown)
16     {
17         if (cur == origin)
18             cnt++;
19         return;
20     }
21     dfs(c+1, cur+1);
22     dfs(c+1, cur-1);
23 }
24 
25 int main()
26 {
27     #ifndef ONLINE_JUDGE
28         freopen("input.txt", "r", stdin);
29     #endif
30 
31     while (scanf("%s%s", str1, str2) != EOF)
32     {
33         int len = strlen(str1);
34         origin = 0;
35 
36         for (int i = 0; i < len; i++)
37         {
38             if (str1[i] == '+')
39                 origin += 1;
40             else
41                 origin -= 1;
42         }
43 
44         int known = 0;
45         unknown = 0;
46         for (int i = 0; i < len; i++)
47         {
48             if (str2[i] == '?')
49                 unknown++;
50             else if (str2[i] == '+')
51                 known += 1;
52             else if (str2[i] == '-')
53                 known -= 1;
54         }
55         if (!unknown)
56         {
57             if (known != origin)
58                 printf("0.000000000000\n");
59             else
60                 printf("1.000000000000\n");
61         }
62         else
63         {
64             cnt = 0;
65             dfs(0, known);
66             fenmu = 1;
67             for (int i = 1; i <= unknown; i++)
68                 fenmu *= 2;
69             printf("%.12lf\n", (double)cnt/(double)fenmu);
70         }
71     }
72     return 0;
73 }

 

转载于:https://www.cnblogs.com/windysai/p/4023090.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在应用程序级别以外使用注册为 allowDefinition='MachineToApplication' 的节是错误

在应用程序级别以外使用注册为 allowDefinitionMachineToApplication 的节是错误 在web.config文件之外注册为 allowDefinitionMachineToApplication 的节是错误 遇到这个问题&#xff0c;我真是晕啊&#xff01; 以下是我个人的经验解决上述的二个问题&#xff0c;至今有时还…

bash删除文件中的空行

方法一&#xff1a;sed /^$/d a.txt 所以如果要将删除后的结果替换原文件中的内容&#xff0c;就可以用&#xff1a; sed /^$/d a.txt > temp; mv temp a.txt 然后在弹出提示符下选择Y就可以了。 方法二&#xff1a;在vi命令提示符下&#xff0c;输入&#xff1a;%s/^\n/…

Taro+react开发(50) 小程序触底操作

onReachBottom() {console.log("我在触底");const { pageIndex, pageSize, getStauList } this.state;if (pageIndex * pageSize > getStauList.length) return;this.setState({pageIndex: pageIndex 1},() > {this.getStatusList();});}

记腾讯互娱网站布局(3)

3.图文回顾 先看看整个网站的全貌 这里’display:table;width:100%;table-layout:fixed’是约定俗成的写法&#xff0c;用来保证固定的表单布局&#xff0c;同时让连续的英文单词不会超出 内部采用’display:table-cell’属性将内容当做表格的td标签一样显示&#xff0c;设置v…

JS阻止冒泡和取消默认事件(默认行为)

阻止事件冒泡 function stopPropagat(e) {if (e && e.stopPropagation) {e.stopPropagation();//标准浏览器} else {window.event.cancelBubble true;//兼容IE的方式来取消事件冒泡}}阻止默认行为 function stopDefault(e) {if (e && e.preventDefault) {e.pr…

如何提高个人的职涯“本钱”

何所谓职业生涯的本钱&#xff1f;简单来说&#xff0c;必须涵盖三个方面&#xff0c;一是充分的能力&#xff0c;包括专业技能、管理知识的储备等&#xff1b;二是态度&#xff0c;即工作态度及风格是否契合你所希望就职公司的文化&#xff0c;开阔的视野、兼容并包的心胸、善…

Taro+react开发(51) 数组对象和数组得处理

for (var key of value) {arrcode.push(selectorIndustry.find(obj > obj.value key));}

简单的python流回显服务器与客户端

环境&#xff1a;Fedora12 python2.6.2 server.py #!/usr/bin/python import socket srvsock socket.socket(socket.AF_INET, socket.SOCK_STREAM) srvsock.bind((, 5000))srvsock.listen(5) while True:clisock, (remoteHost, remotePort) srvsock.accept()str11 clisock…

MongoDB 入门之安装篇

前言&#xff1a;MongoDB 在各 OS 上的安装比较简单&#xff0c;此文章只用来记录&#xff0c;不考虑技术深度。 一、Ubuntu 导入 MongoDB 公钥&#xff0c;添该软件源文件&#xff0c;更新源列表sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 …

大小不固定的图片和多行文字的垂直水平居中

1. 单行文字 可能很多人都知道如何让单行文字垂直居中显示&#xff0c;就是使用line-height&#xff0c;将line-height值与外部标签盒子的高度值设置成一致就可以了 2. 多行文字 说白了就是把文字当图片处理。用一个span标签将所有的文字封装起来&#xff0c;设置文字与图片相…

移动端中使用调试控制台

一、一般移动端&#xff1a;在html head中引入移动端调试控制台代码并初始化&#xff1a; <head><meta charset"UTF-8">....<!-- 移动端调试控制台 --><script src"https://cdn.bootcss.com/eruda/1.4.3/eruda.min.js"></scri…

网络安全解决方案

中小企业网络安全解决方案转载于:https://blog.51cto.com/405214606/144453

Taro+react开发(52) 移动端弹出框使用

<AtFloatLayoutisOpened{isOpened}title"所属行业"onClose{this.handleClose.bind(this)}><View><AtCheckboxoptions{selectorIndustry}selectedList{industryCodeList}onChange{this.handleCheckChange.bind(this)}/></View></AtFloatLa…

GPT每预测一个token就要调用一次模型

问题&#xff1a;下图调用了多少次模型&#xff1f; 不久以前我以为是调用一次 通过看代码是输出多少个token就调用多少次&#xff0c;如图所示&#xff1a; 我理解为分类模型 预测下一个token可以理解为分类模型&#xff0c;类别是vocab的所有token&#xff0c;每一次调用都…

display:table-cell的集中应用

1. display:table-cell属性指让标签元素以表格单元格的形式呈现&#xff0c;类似于td标签。我们都知道&#xff0c;单元格有一些比较特别的属性&#xff0c;例如元素的垂直居中对齐&#xff0c;关联伸缩等&#xff0c;所以display:table-cell还是有不少潜在的使用价值的 与其他…

第三讲系统的基本操作

第三讲系统的基本操作转载于:https://blog.51cto.com/ccccc/145262

移动端click延迟和tap事件

一、click等事件在移动端的延迟 click事件在移动端和pc端均可以触发&#xff0c;但是在移动端有延迟现象。 1、背景 由于早期移动设备浏览网页时内容较小&#xff0c;为了增强用户体验&#xff0c;苹果公司专门为移动设备设计了双击放大的功能&#xff0c;以确保用户可以方便…

Taro+react开发(53) Taro提示操作

if (res.data.returnCode 0) {Taro.showToast({title: "操作成功",duration: 2000});Taro.navigateTo({url: /pages/companyIntroDetail/index});}

结构 struct

结构 struct 结构是使用struct关键字定义的 结构与类相似,但有两大区别: 1.结构属于值类型,而类属于引用类型; 2.结构是隐式密封的,也就是不可继承的,而一般的类不是隐式密封的. 其他区别: 3.结构中不能再定义无参数构造函数或析构函数,而类中可以 4.结构中普通字段不能直接赋值…

基于display:table的CSS布局

CSS表格能够解决所有那些我们在使用绝对定位和浮动定位进行多列布局时所遇到的问题。例如&#xff0c;“display:table;”的CSS声明能够让一个HTML元素和它的子节点像table元素一样。使用基于表格的CSS布局&#xff0c;使我们能够轻松定义一个单元格的边界、背景等样式&#xf…