日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Easy与Osu

發布時間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Easy与Osu 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Easy

題目描述

某一天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了

輸入

第一行一個整數n,表示點擊的個數
接下來一個字符串,每個字符都是ox?中的一個

輸出

一行一個浮點數表示答案
四舍五入到小數點后4位
如果害怕精度跪建議用long double或者extended

樣例輸入

4 ????

樣例輸出

4.1250n<=300000 osu很好玩的哦 WJMZBMR技術還行(霧),x基本上很少呢


Osu

題目描述

osu 是一款群眾喜聞樂見的休閑軟件。? 我們可以把osu的規則簡化與改編成以下的樣子:? 一共有n次操作,每次操作只有成功與失敗之分,成功對應1,失敗對應0,n次操作對應為1個長度為n的01串。在這個串中連續的 X個1可以貢獻X^3 的分數,這x個1不能被其他連續的1所包含(也就是極長的一串1,具體見樣例解釋)? 現在給出n,以及每個操作的成功率,請你輸出期望分數,輸出四舍五入后保留1位小數。?

輸入

第一行有一個正整數n,表示操作個數。接下去n行每行有一個[0,1]之間的實數,表示每個操作的成功率。?

輸出

只有一個實數,表示答案。答案四舍五入后保留1位小數。?

樣例輸入

3 0.5 0.5 0.5

樣例輸出

6.0
【題解】
一個游戲產生的兩道題,只不過一個是二次方一個是三次方,套路非常相近。f[i]表示以i為結尾的極大連續1長度的期望(其實在此處還不用考慮結尾不結尾的事),g[i]表示平方的期望,h[i]表示立方的期望。g[i]本應=(f[i-1]+1)^2=f[i-1]*f[i-1]+2*f[i-1]+1,但是這里平方是在期望意義下的,所以用g[i-1]代替f[i-1]*f[i-1],最后乘上這一位是1的概率,立方同理。計算結果時要考慮下一位的情況了,再乘上(1-p[i+1])。這道題在期望、概率、數字之間的轉化比較靈活,也展現了高次遞推的一些套路。安心地使用double并沒有炸精度。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int sj=300010; int n; double f[sj],g[sj],jg; char a[sj]; int main() {//freopen("t.txt","r",stdin);scanf("%d%s",&n,a);for(int i=1;i<=n;i++){if(a[i-1]=='o') {f[i]=f[i-1]+1;g[i]=g[i-1]+2*f[i-1]+1;}if(a[i-1]=='x'){ f[i]=0;g[i]=0;}if(a[i-1]=='?'){ f[i]=(f[i-1]+1)/2;g[i]=(g[i-1]+2*f[i-1]+1)/2;}if(a[i]!='?'&&a[i]!='o') jg+=g[i];if(a[i]=='?') jg+=g[i]/2;}printf("%.4lf",jg);//while(1);return 0; } #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int sj=100010; double f[sj],g[sj],h[sj],jg,p[sj]; int n; int main() {//freopen("t.txt","r",stdin);scanf("%d",&n);for(int i=1;i<=n;i++) {scanf("%lf",&p[i]);f[i]=(f[i-1]+1)*p[i];}for(int i=1;i<=n;i++) g[i]=(g[i-1]+2*f[i-1]+1)*p[i];for(int i=1;i<=n;i++){ h[i]=(h[i-1]+3*g[i-1]+3*f[i-1]+1)*p[i];jg+=h[i]*(1-p[i+1]);}printf("%.1lf",jg);//while(1);return 0; }

?

?

轉載于:https://www.cnblogs.com/moyiii-/p/7241936.html

總結

以上是生活随笔為你收集整理的Easy与Osu的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。