開啟某谷,搜尋osu
luogu p1654
luogu cf235b
luogu p1365
先%本機房的真·osu!神仙 sto superminivan orz
三道題都差不多,就當三倍經驗了
大力推式子
設$f[i]$表示以$i$結尾的期望得分,$len$為期望連續的$o$的個數
分類討論:
①當前字母為$o$時,$f[i]=f[i-1]+((len+1)^2-len^2)$ 此時$len+1$
化簡 $=>$ $f[i]=f[i-1]+2*len+1$
②當前字母為$x$時,$f[i]=f[i-1]$ 此時$len=0$
③當前字母為?時,為$(①+②)/2$
也就是 $f[i]=f[i-1]+len+0.5$
整理變成$f[i]=f[i-1]+(2*len+1)*p[i]$
其中$p[i]$就是i位置出現o的期望
$o$ $p[i]=1$
$x$ $p[i]=0$
$?$ $p[i]=0.5$
再看$len$怎麼維護,設$x[i]$表示$i$結尾的最後一段連續$o$的個數
同樣可以轉化為$x[i]=(x[i-1]+1)*p[i]$
綜上,轉移方程為
$$f[i]=f[i-1]+(2*x[i]+1)*p[i]$$
code
1 #include2view codeusing
namespace
std;
3#define ll long long
4const
int mod=1e4;
5const
int maxn=1e6+10;6
namespace
gengyf
10while(s>='
0'&&s<='9')
11return f*x;12}
13double
f[maxn],p[maxn],x[maxn];
14string s;int
n;15
intmain()
22for(int i=1;i<=n;i++)
26 printf("
%.4lf
",f[n]);
27return0;
28}29/*
30aggressive 有進取心的
31alert 機敏的
32alliance 聯盟
33alter 修改
34*/35}
36signed main()
沒有$?$且給出出現不同字元的概率,方程同上
code
1 #include2view codeusing
namespace
std;
3#define ll long long
4const
int mod=1e4;
5const
int maxn=1e6+10;6
namespace
gengyf
10while(s>='
0'&&s<='9')
11return f*x;12}
13double
f[maxn],p[maxn],x[maxn];
14string s;int
n;15
intmain()
22 printf("
%.15lf
",f[n]);
23return0;
24}25/*
26aggressive 有進取心的
27alert 機敏的
28alliance 聯盟
29alter 修改
30*/31}
32signed main()
沒有$?$,平方變成三次方
我:這還不簡單,把$(len+1)^2-len^2$改成$(len+1)^3-len^3$不就行了
???怎麼連樣例都沒過
蒟蒻眉頭一皺發現事情並不簡單
重新推一下式子:
$f[i]=f[i-1]+((len+1)^3-len^3)$ $=>$ $f[i]=f[i-1]+3*(len^2+len)+1$
發現化簡後的式子裡既有二次項也有一次項
需要分別維護
$x[i]$表示一次項的期望,$y[i]$表示二次項的期望
code
1 #include2view codeusing
namespace
std;
3#define ll long long
4const
int mod=1e4;
5const
int maxn=1e6+10;6
namespace
gengyf
10while(s>='
0'&&s<='9')
11return f*x;12}
13double
f[maxn],p[maxn],x[maxn],y[maxn];
14string s;int
n;15
intmain()
23 printf("
%.1lf
",f[n]);
24return0;
25}26/*
27aggressive 有進取心的
28alert 機敏的
29alliance 聯盟
30alter 修改
31*/32}
33signed main()
J Sushi 題解(期望dp
給你n個盤子,每個盤子可能有1,2,3個披薩 你選到每個盤子的概率是一樣的。你如果選到空的盤子什麼都不做 如果你選到有披薩的盤子則吃掉乙個披薩 求吃完所有披薩的期望 設現在還有u個1個盤子的披薩,v個2.z個3.則顯然吃掉下乙個披薩的概率為 u v w n則期望為n u v w 那麼顯然公式就是下面...
考試前三題題解
考自閉了,第四題陣列開小了。答案肯定不是一位數就是兩位數,先掃瞄看是否有相同的數,沒有就排序取最小的。include.h using namespace std const int m 15 int a m b m n,m bool vis m vis m int main for int i 1 ...
學習筆記 期望DP題單 概率,期望DP
目錄貳 典例營 做過很多期望的題了,但是一直沒有系統地學習過期望,這幾天終於有時間攻堅這個重要但是對我而言難得一匹的問題了.實際上我 dp 也菜得一匹。傳送門 to oi wiki 一般我們使用 p x 表示 x 發生的概率,e x 表示 x 發生的期望。我們有兩者的關係 e x sum p x i...