首页 > TAG信息列表 > OSU

洛谷 P1654 OSU!

思路 考虑 \(DP\) 转移,设 \(F[i]\) 表示长度为 \(i\) 序列的期望分数。 得到如下转移: \(F[i]=(F[i-1]-A[i-1]+A[i])p_i+F[i-1](1-p_i)\) 其中 \(A[i]\) 的意义是:以 \(i\) 位 \(1\) 结尾极长连续段的立方贡献的期望分数。 再设 \(B[i]\) 为以 \(i\) 位 \(1\) 结尾极长连续段的平方

LuoguP1635 WJMZBMR打osu! / Easy 题解

题目传送门 题目大意 给定一个包含 o 和 x 的序列,有些位置是不确定的,用 ? 表示(\(50\%\) 的概率为 x \(50\%\) 概率为 o)。 连续长度的为 \(a\) 的 o 可以获得收益 \(a^2\)。 现在要求收益的期望值。 题目解析 假设这个序列为 \(\{a_n\}\)。 首先不考虑求期望值,也就是说这个序列式给

【专题】概率期望乱写

概率与期望DP 绿豆蛙的归宿 DAG上求起点到重点的期望路径长度 设 \(F[i]\) 表示从\(i\)到\(n\)的期望步数 显然\(F[n]\)为零,转移则为 \(F[i]=\sum_{son(j)}{(F[j]+dis_{i,j})/DEG[i]}\) 在DAG上做拓扑排序进行转移即可 较为水 聪聪和可可 老鼠的走法就是随机走一个点或者停留 考

P1365 WJMZBMR打osu! / Easy 题解(期望dp)

题目链接 题目思路 显然每次转移都需要知道前面连续长度的期望 所以使用两个数组,一个记录答案,一个记录连续长度期望即可 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; #define fi first

P1654 OSU!

P1654 OSU! 题目 题目背景 原 《产品排序》 参见P2577 题目描述 osu 是一款群众喜闻乐见的休闲软件。 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的01串。在这个串中连续的 \(X\) 个 \(1

WJMZBMR打osu! / Easy

by luogu 期望dp 很好的题,但是我太菜了 我开始的思路是统计?的个数,然后dfs处理  但是发现N3e5我的想法也无法实现   len记录当前一连串 o 的个数 当遇到 x 时处理结束;     #include<bits/stdc++.h> using namespace std; const int N=3e5+7; int n; long double dp[N],len;

[题解] P1654 OSU!

[题解] P1654 OSU! 传送门 解题报告 题意描述自己看吧。 考虑到两个公式: \((a+b)^2=a^2+2ab+b^2\) \((a+b)^3=a^3+3a^2b+3ab^2+b^3\) 不妨设 DP 数组 \(f[i][0/1]\) 表示第 \(1\) 到 \(i\) 位 \(1\) 的期望个数,其中 \(0\) 维维护原始期望值,\(1\) 维维护 平方的期望值(顺序不可颠

【YBTOJ】【CF235B】【Luogu P1365】Let's Play Osu!

题目大意: 有 \(n\) 次点击要做,成功了就是 o,失败了就是 x,分数是按 combo 计算的,连续 \(a\) 个 combo 就有 \(a\times a\) 分,combo 就是极大的连续o。 思路: 设 \(f_i\) 表示前 \(i\) 秒期望分数,\(g_i\) 表示前 \(i\) 秒期望连续 combo。 方程显然: \[g_i=(g_{i-1}+1)p \]\[f_i=f_{i-1

Luogu1654 OSU! 题解

题目传送门 先设 \(x\) 为当前得分,当又得到 \(1\) 分时,有: \[(x+1)^3=x^3+3x^2+3x+1 \]由于原先得分为 \(x^3\) ,可知每次 \(+1\) 都会增加 \(3x^2+3x+1\) 分。 在代码实现过程中,用 \(x\) 维护一维 \(x\) ,\(y\) 维护二维 \(x^2\) ,就很容易实现了。 View code: #include<bits/stdc++.

osu合集(期望dp)

T1 EASY 我们设\(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}\) 解

【洛谷P1654】OSU!

题目 https://www.luogu.org/problem/P1654 题意 给定每个位置为$1$的几率,一段长度为$x$的连续的并且极大的$1$对得分的贡献为$x^3$,求得分的期望。 题解 显然,我们可以换一种统计答案的方式,把贡献分给每个极长的前缀$1$,设在序列的第$i$个位置时,这个贡献为$val_i$。 当$i$前面有且仅

P1654 OSU!

题目背景 原 《产品排序》 参见P2577 题目描述 osu 是一款群众喜闻乐见的休闲软件。 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的01串。在这个串中连续的 XX 个 11 可以贡献 X^3X3 

【BZOJ - 4318】OSU!(概率dp,数学期望,期望的线性性)

题干: osu 是一款群众喜闻乐见的休闲软件。  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的01串。在这个串中连续的 X个1可以贡献X^3 的分数,这x个1不能被其他连续的1所包含(也就是极长的

【bzoj 4318】OSU!

 题意   一个长度为 $n$ 的字符串,第 $i$ 位有 $p_i$ 的概率是 $1$,否则是 $0$。一个字符串的分数定义为:对于字符串中每一个极长的连续一段 $1$,设这段 $1$ 的长度为 $x$,分数累加 $x^3$。   求字符串的期望分数。  题解   考虑分数累加 $x^3$ 而不是 $x$ 时怎么做。   设 $f

Luogu P1654 OSU! | 期望

题目链接 很妙的一道题。 题目要求$X^3$的期望值。 直接求不好求。 考虑先求出$X$和$X^2$的期望值,然后再求$X^3$的期望值。 迎.刃.而.解.   #include<iostream>#include<cstdio> using namespace std; double p[100005],x1[100005],x2[100005],x3[100005];int main(){

Luogu P1365 WJMZBMR打osu! / Easy

概率期望专题首杀…… 毒瘤dp 首先根据数据范围推断出复杂度在O(n)左右 但不管怎么想都是n^2…… 晚上躺在床上吃东西的时候(误)想到之前有几道dp题是通过前缀和优化的 而期望的可加性又似乎为此创造了条件 那么 是不是可以只考虑多一个o对整体期望的贡献? 很显然,为(x+1)^2-x^2=2x+1

洛谷 P1365 WJMZBMR打osu! / Easy

题目背景 原 维护队列 参见P1903 题目描述 某一天\(WJMZBMR\)在打\(osu~~~\)但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有\(n\)次点击要做,成功了就是\(`o`\),失败了就是\(`x`\),分数是按\(combo\)计算的,连续\(a\)个\(combo\)就有\(a\times a\)分,\(combo\)就

Luogu P1654 OSU!

写法和CF235B Let's Play Osu!非常相似。但是这个题厉害就厉害在统计的贡献里面有一个平方的期望,而这个平方的期望和期望的平方是完全不一样的,需要另外统计,逻辑上仔细想一想就会明白。 期望\(dp\)没那么可怕,但是确实非常不容易调试。所以一定要在第一次推出式子的时候,保证式子的正

Java中 BufferedInputStream/BufferedOutputStream 与 FileInputStream/FileOutputStream 性能对比测试

BufferedInputStream/BufferedOutputStream在文件I/O过程中使用了缓冲区,从而提高了I/O性能。具体提升多少?下面进行测试 测试环境: CPU:i3-4160 @3.6GHz内存:4G DDR3 @1333MHz硬盘:WDC_WD5000AAKX-08U6AA0 ATA系统:Windows 7 旗舰版 采用文件加密与解密的方法对BufferedInputStream/Buffe

[BZOJ4318] OSU!

比较简单,每个键分两种情况计算期望。 然而要注意的是,期望是线性运算,期望的平方不是平方的期望 。 ```cpp include include include include include include include using namespace std; define scnaf scanf const int maxn = 100000 + 10; int n; double a[maxn], dp[max