osu合集(期望dp)
T1
我们设\(f_i\)表示到\(i\)的连续个数平方的期望。 \(g_i\)表示到到\(i\)的连续个数的期望
在维护\(f_i\)的同时维护一下\(g_i\)就行了。
转移方程: \(g_i\)= \(p_i \times g_{i-1}\);
\(f_i = p_i \times (f_{i-1} + 2 \times g_{i-1} + 1) + (1-p_i) \times f_{i-1}\)
解释一下第二个方程,
长度有\(p_i\)的概率有\(x\)变为\(x+1\)
那么分数就会增加\((x+1)^2 - x^2\) 即\(2 \times x - 1\)
再加上有\(1-p[i]\)的概率保持原来的不变,所以就有了上面的方程
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
char ch;
int n;
double p,g[300010],f[300010];
int main()
{
scanf("%d",&n);
for(int i = 1; i <= n; i++)
{
cin>>ch;
if(ch == 'o') p = 1.0;
if(ch == 'x') p = 0.0;
if(ch == '?') p = 0.5;
g[i] = p * (g[i-1] + 1);//维护一下区间期望长度
f[i] = f[i-1] * (1-p) + (f[i-1] + 2 * g[i-1] + 1) * p;//维护期望得分
}
printf("%.4f\n",f[n]);
return 0;
}
T2
和上面那个题差不多。
转移时维护一个连续个数的期望和连续个数平方的期望就水过去了。
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
double p,f[100010],g[100010];
int main()
{
scanf("%d",&n);
for(int i = 1; i <= n; i++)
{
scanf("%lf",&p);
g[i] = p * (g[i-1] + 1);
f[i] = f[i-1] * (1-p) + (f[i-1] + 2 * g[i-1] + 1) * p;
}
printf("%.15lf",f[n]);
return 0;
}
T3
这个题很上面的两个题还是有点区别的,但是多想一想也就明白了
当连续的X个个数由\(x\)变为\(x+1\)时
期望得分就会由\(x^3\)变为\((x+1)^3\)
也就是\(3 \times x^2 \times \ 3 \times x + 1\)
转移的时候维护三个数组,分别表示连续个数的期望,连续个数平方的期望,和期望得分。
剩下的随便水水就过了。
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
double p[100010],f[100010],g[100010],h[100010];
int main()
{
scanf("%d",&n);
for(int i = 1; i <= n; i++) scanf("%lf",&p[i]);
for(int i = 1; i <= n; i++)
{
h[i] = p[i] * (h[i-1] + 1);//连续个数的期望
g[i] = p[i] * (g[i-1] + 2 * h[i-1] + 1);//连续个数平方的期望
f[i] = f[i-1] * (1-p[i]) + p[i] * (f[i-1] + 3 * g[i-1] + 3 * h[i-1] + 1);//期望得分
}
printf("%.1lf",f[n]);
return 0;
}
期望题就是想出来与想不出来的区别。
想出来了代码也就可以实现出来了。
但是想不出来他就是 爆玲QAQ.
osu合集(期望dp)的更多相关文章
- luogu P1365 WJMZBMR打osu! / Easy(期望DP)
题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有nnn次点击要做,成功了就是o,失败了就是 ...
- 【洛谷1654/BZOJ4318】OSU!(期望DP)
题目: 洛谷1654 分析: 本人数学菜得要命,这题看了一整天才看明白-- 先说说什么是"期望".不太严谨地说,若离散型随机变量(可以看作"事件")\(X\)取 ...
- [LeetCode] Best Time to Buy and Sell Stock 6道合集【DP】
1. Best Time to Buy and Sell Stock 2. Best Time to Buy and Sell Stock II 3. Best Time to Buy and Sel ...
- 9.15 DP合集水表
9.15 DP合集水表 显然难了一些啊. 凸多边形的三角剖分 瞄了一眼题解. 和蛤蛤的烦恼一样,裸的区间dp. 设f[i][j]表示i~j的点三角剖分最小代价. 显然\(f[i][i+1]=0,f[i ...
- 【BZOJ】4318: OSU!【期望DP】
4318: OSU! Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 1473 Solved: 1174[Submit][Status][Discuss ...
- dp合集 广场铺砖问题&&硬木地板
dp合集 广场铺砖问题&&硬木地板 很经典了吧... 前排:思想来自yali朱全民dalao的ppt百度文库免费下载 后排:STO朱全民OTZ 广场铺砖问题 有一个 W 行 H 列的广 ...
- 9.14 DP合集水表
9.14 DP合集水表 关键子工程 在大型工程的施工前,我们把整个工程划分为若干个子工程,并把这些子工程编号为 1. 2. --. N:这样划分之后,子工程之间就会有一些依赖关系,即一些子工程必须在某 ...
- 【BZOJ4318】OSU! 期望DP
[BZOJ4318]OSU! Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1 ...
- DP+贪心水题合集_C++
本文含有原创题,涉及版权利益问题,严禁转载,违者追究法律责任 本次是最后一篇免费的考试题解,以后的考试题目以及题解将会以付费的方式阅读,题目质量可以拿本次作为参考 本来半个月前就已经搞得差不多了,然后 ...
随机推荐
- 使用OpenCV和Python构建自己的车辆检测模型
概述 你对智慧城市的想法感到兴奋吗?如果是的话,你会喜欢这个关于建立你自己的车辆检测系统的教程的 在深入实现部分之前,我们将首先了解如何检测视频中的移动目标 我们将使用OpenCV和Python构建自 ...
- 小白也能弄懂的目标检测YOLO系列之YOLOV1 - 第二期
上期给大家展示了用VisDrone数据集训练pytorch版YOLOV3模型的效果,介绍了什么是目标检测.目标检测目前比较流行的检测算法和效果比较以及YOLO的进化史,这期我们来讲解YOLO最原始V1 ...
- 查看Linux虚拟机是什么架构
uname -a 可以看出此虚拟机是x86架构,64位
- Oracle数据库访问客户端 sqldeveloper-19.2.1.247.2212-x64 下载
Oracle数据库访问客户端 sqldeveloper-19.2.1.247.2212-x64 地址:https://pan.baidu.com/s/1iojCVxwXocyM8oObTf0xaw 这 ...
- 理解C#回调函数
序言 本篇主要学习了C#回调函数的定义使用.欢迎各位大牛的指导. 正文 回调函数是什么? 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调 ...
- 转发请求RequestDispatcher()方法用于与页面的交互
jsp1代码 <form action="HelloServlet" > 账号: <input type="text" name=" ...
- Promise核心实现
核心 构造函数核心 维护状态变量,只能由pending变为resolve或者reject 维护一个存储结果的变量 维护一个回调数组,执行到then,如果我们传入的立即执行函数没有立即执行resolve ...
- mysql 5.7密码策略和安装密码校验插件validate_password
当执行sql:SHOW VARIABLES LIKE 'validate_password%';提示empty,说明没有安装密码插件 1.查看当前mysql安装的插件信息 mysql> show ...
- [程序员代码面试指南]数组和矩阵-求最短通路值(BFS)
题意 给二维矩阵 1.0组成,问从左上角到右下角的最短通路值. 题解 BFS基础.头节点入队:对队内每个节点判断.处理,符合条件的入队:到了终点节点返回. 相关知识 Queue为接口,LinkedLi ...
- 分布式系统监视zabbix讲解六之自定义监控项
概述 Zabbix支持许多在多种情况下使用宏.宏是一个变量,由如下特殊语法标识: {MACRO} 根据在上下文中, 宏解析为一个特殊的值. 有效地使用宏可以节省时间,并使Zabbix变地更加高效. 在 ...