C 自閉的遊戲

2022-02-24 22:55:35 字數 2205 閱讀 2865

小s在玩乙個自閉的遊戲。

有乙個骰子,這個骰子有\(m\)個面分別寫著 \(1\cdots m\)

並且投擲時每面朝上的概率相同

現在,小s投了這個骰子\(n\)次,並且告訴小t點數\(v\)至少出現了一次。

小t需要猜測乙個正整數\(sum\),表示她猜測的這\(n\)次骰子的點數之和是多少。

現在,他想要知道玩家的正確率有多少呢?

一行四個正整數,分別表示\(n,m,v,sum\)。

一行乙個實數,表示猜對的概率。你的答案被認為是正確的,當且僅當絕對或相對精度誤差\(\le 10^\)。

樣例一input

2 6 6 12
output
0.09090909
樣例二

input

2 3 2 4
output
0.20000000
對於\(10\%\) 的資料,滿足 \(1 \le n \le 1\)。

對於\(40\%\) 的資料,滿足 \(1 \le n,m \le 20\)。

對於\(100\%\) 的資料 ,滿足 \(1 \le n,m \le 50\) ,\(1\le v\le m\),\(1\le sum\le n\times m\)。

時間限制:1s

空間限制:128mb

題意理解

有\(n\)個點,每個點的取值範圍是\([1,n]\),已知在這\(n\)個點中,至少有乙個點的值為\(v\),將這個\(n\)個點的和累加,得到值\(x\)

問:當\(x=sum\)的時候的取數方案數占總合法取數方案數的比例?

\(40pts\)思路

我們可以使用暴力搜尋,算出每一種方案數,然後再統計合法方案。

**略\(100pts\)思路

我們觀察這道題目,發現以下幾種性質。

題目並不關心我們的具體方案,只需要方案數(屬性為統計)

至少有乙個數是\(v\) (限制條件)

前面取什麼數字,和後面取什麼數字並沒有任何影響。(無後效性)

那麼上面這些性質,就可以保證,這道題目可以使用動態規劃演算法。

我們接著討論,如何描述這個狀態。

我們發現,這道題目具有明顯的線性性質

我們可以把,每一次甩骰子,作為我們的階段。

\[f[i] \quad 表示此時選到了第i個數

\]接著題目關心,我們這些數的和。

\[f[i][k] \quad 表示此時選到了第i個數,這些數的和是k

\]接著題目的限制條件是,這些數中是否至少有乙個數是\(v\)

\[f[i][k][0/1] \quad 表示此時選到了第i個數,這些數的和是k \\\\

0表示沒有乙個v,1表示至少有乙個v

\]那麼狀態轉移方程是什麼呢?自然就是我們的揹包動態規劃的模樣了。

假如說,此時我們第\(i\)個數,他的值是\(j\)

f[i][k][0]+=f[i-1][k-j][0]

//到目前都沒有出現v,那麼推來的狀態,也不可以出現v

if (j!=v)//當前選擇元素不是v

f[i][k][1]+=f[i-1][k-j][0]

//現在已經出現v了,而本次沒有選擇v,那麼推來的狀態,必須出現過v

if (j==v)

f[i][k][1]+=f[i-1][k-j][0]+f[i-1][k-j][1];

//因為本次選擇了v,之前是否選擇v沒有限制

**解析
#include using namespace std;

const int n=52;

int n,m,v,sum;

double f[n][n*n][2];

inline void init()

double ans=0;

for(int j=1; j<=n*m; j++)

ans+=f[n][j][1];//合法方案,要求是必須選擇v的

printf("%.8lf\n",f[n][sum][1]/ans);//保證精度

}signed main()

A 自閉的序列

給乙個長度為 n 的非負整數序列 a 求乙個a的長度在 l,r 之間的連續子串行,並且他們所有元素的平均值最大。你只要輸出這個最大值就可以了。第一行包含三個整數 n,l,r 接下來一行 n 個數,表示序列a。包括一行乙個實數表示答案,保留四位小數。樣例一input3 2 3 6 2 8output5...

問題 F 超超的自閉意思

時間限制 1 sec 記憶體限制 128 mb 提交 80 解決 10 提交 狀態 命題人 jsu admin 題目描述 質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。回文數定義為在正整數中,從左到右,從右到左讀都相同的數字。沒有前導零的十進位制 現在 z n 表示不大於n的質數個...

吉首 超超的自閉意思 素篩 暴力

時間限制 1 sec 記憶體限制 128 mb 質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。回文數定義為在正整數中,從左到右,從右到左讀都相同的數字。沒有前導零的十進位制 現在 z n 表示不大於n的質數個數,h n 表示不大於n的回文數個數。給定兩個數b,a。求最大n,滿足b ...