Bzoj 3450: Tyvj1952 Easy 期望/概率,动态规划
3450: Tyvj1952 Easy
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 431 Solved: 325
[Submit][Status][Discuss]
Description
某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(
我们来简化一下这个游戏的规则
有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连续a个comb就有a*a分,comb就是极大的连续o。
比如ooxxxxooooxxx,分数就是2*2+4*4=4+16=20。
Sevenkplus闲的慌就看他打了一盘,有些地方跟运气无关要么是o要么是x,有些地方o或者x各有50%的可能性,用?号来表示。
比如oo?xx就是一个可能的输入。
那么WJMZBMR这场osu的期望得分是多少呢?
比如oo?xx的话,?是o的话就是oooxx => 9,是x的话就是ooxxx => 4
期望自然就是(4+9)/2 =6.5了
Input
第一行一个整数n,表示点击的个数
接下来一个字符串,每个字符都是ox?中的一个
Output
一行一个浮点数表示答案
四舍五入到小数点后4位
如果害怕精度跪建议用long double或者extended
Sample Input
????
Sample Output
n<=300000
osu很好玩的哦
WJMZBMR技术还行(雾),x基本上很少呢
HINT
Source
题解:
概率/期望+动态规划
设L为期望为o的长度
当下一个数为x时,L=0
当下一个数为o时,L++, ans=ans+(L+1)*(L+1)-L*L
=ans+L^2+2*L+1-L^2
=ans+2*L+1
当下一个数为?时,L可能为0或L+1,所以L的期望值为(0+L+1)/2
同理,ans可能加上0或2*L+1,所以ans的期望值要加的数为(0+2*L+1)/2
然后直接动规即可。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i;
double ans=0.0,l=0.0;
char a;
scanf("%d\n",&n);
for(i=;i<=n;i++)
{
scanf("%c",&a);
if(a=='o'){ans+=(l*2.0+1.0);l++;}
else if(a=='x')l=0.0;
else {ans=ans+(l*2.0+1.0)*0.5;l=(l+1.0)*0.5;}
}
printf("%.4lf",ans);
fclose(stdin);
fclose(stdout);
return ;
}
Bzoj 3450: Tyvj1952 Easy 期望/概率,动态规划的更多相关文章
- Bzoj 3450: Tyvj1952 Easy (期望)
Bzoj 3450: Tyvj1952 Easy 这里放上题面,毕竟是个权限题(洛谷貌似有题,忘记叫什么了) Time Limit: 10 Sec Memory Limit: 128 MB Submi ...
- BZOJ 3450: Tyvj1952 Easy [DP 概率]
传送门 题意:$ox?$组成的序列,$?$等概率为$o\ or\ x$,得分为连续的$o$的长度的平方和,求期望得分 一开始没想出来,原因在于不知道如何记录长度 其实我们同时求得分和长度的期望就好了 ...
- BZOJ 3450 Tyvj1952 Easy ——期望DP
维护$x$和$x^2$的期望递推即可 #include <map> #include <ctime> #include <cmath> #include <q ...
- bzoj4318 OSU!和bzoj 3450 Tyvj1952 Easy
这俩题太像了 bzoj 3450 Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点 ...
- bzoj 3450 Tyvj1952 Easy (概率dp)
3450: Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则有n次点击要做,成功了就是o,失败 ...
- BZOJ 3450 Tyvj1952 Easy(期望)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3450 [题目大意] 给出一个字符串,包含o,x和?,一个字符串的得分为 每段连续的o的 ...
- BZOJ 3450: Tyvj1952 Easy 数学期望
Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) ...
- 【概率】BZOJ 3450:Tyvj1952 Easy
Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连 ...
- BZOJ.3450.(JoyOI1952) Easy(期望)
题目链接 /* 设f[i]为到i的期望得分,c[i]为到i的期望连续长度 则若s[i]=='x',f[i]=f[i-1], c[i]=0 s[i]=='0',f[i]=f[i-1]+2*c[i-1]+ ...
随机推荐
- mysql 查找包含特定名字的表
SELECT distinct TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '%medias%'
- MySQL簇-cluster
http://www.php100.com/manual/MySQL/ndbcluster.html 先做个标记吧.
- magento install
1: apt-get insatll apache2 mysql php5 2: 把下载的magneto 解压后放到 /var/www/magento 3: 进入 http://127. ...
- STM32固件库
一.STM32固件库开发和传统寄存器开发方式的区别 二.CMSIS标准 CMSIS标准--Cortex Microcontroller Software Interface Standard,是ARM ...
- MDK建立STM32F103*开发模板
一.整体流程 1.获取ST库--STM32F10x_StdPeriph_Lib_V3.5.0 2.新建文件夹并加载文件 3.新建工程 4.给工程添加组 5.设置"Target Option& ...
- 将FAT32格式转换成NTFS格式命令
convert f: /fs:ntfs /x 可以不用格式化里面的数据
- C语言里的指针探析——type *name[] 在函数参数里面,是一个二维指针
type *name[] 在函数参数里面声明和不在函数里面声明其实不一样. type *name[] 如果在函数参数里声明,则name 是一个二维指针,并不是一个指针数组,而如果不在函数参数里声明,则 ...
- Hibernate save或者persist 后获取主键ID
一个自增长ID的对象被save或者persist后,会返回其主键ID: Department department = new Department(); department.setName(&qu ...
- [QuickX]xcode运行Quick-cocos2d-x项目时自动更新lua资源文件
1.项目设置 build settings ->build options ->Scan all source files and Includes = YES 2.加入script (1 ...
- linux和windows双系统导致的时间日
我的博客:www.while0.com系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,而我们当地是用的北京时间要慢8小时.linux采用的UTC时间 ...