codevs 1060 搞笑世界盃

2021-07-24 10:33:20 字數 1572 閱讀 5965

時間限制: 1 s

空間限制: 128000 kb

題目等級 : 鑽石 diamond

題解

隨著世界盃小組賽的結束,法國,阿根廷等世界強隊都紛紛被淘汰,讓人心痛不已. 於是有

人組織了一場搞笑世界盃,將這些被淘汰的強隊重新組織起來和世界盃一同比賽.你和你的朋

友欣然去購買球票.不過搞笑世界盃的球票**方式也很特別,它們只準備了兩種球票.a 類

票------免費球票 b 類票-------雙倍價錢球票.購買時由工作人員通過擲硬幣決定,投到正面

的買a類票, 反面的買b類票.並且由於是市場經濟,主辦方不可能倒貼錢,所以他們總是準備

了同樣多的a類票和b類票.你和你的朋友十分幸運的排到了某場精彩比賽的最後兩個位置.

這時工作人員開始通過硬幣售票.不過更為幸運的是當工作人員到你們面前時他發現已無需

再擲硬幣了,因為剩下的這兩張票全是免費票。

你和你的朋友在欣喜之餘,想計算一下排在隊尾的兩個人同時拿到一種票的概率是多少

(包括同時拿a 類票或b類票) 假設工作人員準備了2n 張球票,其中n 張a類票,n 張b類票,並且排在隊伍中的人每人必須且只能買一張球票(不管擲到的是該買a 還是該買b).

輸入描述 input description

輸入檔案僅一行,包含球票數2n . 其中,0輸出描述 output description

輸出檔案只包含乙個數,為拿到同一種票的概率,精確到小數點後4 位。

樣例輸入 sample input

256

樣例輸出 sample output

0. 9500

資料範圍及提示 data size & hint

en 分類標籤   動態規劃

遞推數論

又是一道數學題, 不過考查的是遞推技巧, 若能想出狀態定義, 題目就迎刃而解了;

考試時沒來得及看, 後來聽了cl大佬的講解, 豁然開朗, 原來這麼簡單呀!

#include#include#include#includeusing namespace std;

const int maxn=1500;

const int inf=0x3f3f3f3f;

int n;

double f[maxn][maxn];

// f[i][j]表示在第 i+j 個人, 選了i個a和j個b的概率;(就這麼簡單的一句話, 妙極)

int main()

} printf("%.4lf", 1.0-f[n-1][n-1]); //除去最後兩人不同的情況, 就是相同的情況;

return 0;

}

其實我們還可以想一想輸出f[n-2][n]+f[n][n-2]對不對呢?

表面上看沒有問題,兩個人票相同不就是到倒數第二個人的時候, 剩下兩張a或b, 兩種情況嗎?

其實, 仔細想一想就會發現, 這兩種情況並沒有包含所有的情況, 道理很簡單, 有可能前一半的人把a都買了, 或者。。。

只要在倒數第二個人之前買完了a or b的情況都應該算的;

還是乖乖的輸出 1.0-f[n-1][n-1] 吧 !

Codevs 1060 搞笑世界盃

1060搞笑世界盃 時間限制 1 s空間限制 128000 kb題目等級 鑽石 diamond 題目描述description 隨著世界盃小組賽的結束,法國,阿根廷等世界強隊都紛紛被淘汰,讓人心痛不已.於是有 人組織了一場搞笑世界盃,將這些被淘汰的強隊重新組織起來和世界盃一同比賽.你和你的朋 友欣然...

搞笑世界盃

有n張a類票 n張b類票,在兩張票都有的情況下,工作人員會以1 2的概率發票,否則就直接發僅存的那類票。現在請問最後兩張發出去的票是相同種類的概率是多少?n 2000 概率型dp 定義 dp i j 為還剩i張a類票,j張b類票,最後兩張相同的概率。易得出dp i 0 dp 0 i 1.0 i 2 ...

歷屆世界盃的搞笑故事

報紙開玩笑 第四屆世界盃賽上美國隊爆冷門以1 0擊敗英格蘭隊,英國記者發稿回去時,編輯認為記者開玩笑,自己還把比數改為1 10,英格蘭贏,舉世譁然。球王的哀求 習慣上,冠軍爭奪戰勝負分曉時,有些球迷會衝下來擁抱球員,甚至從球員身上拿點東西當紀念。然而第九屆世界盃賽巴西隊奪得冠軍時,球迷太狂熱了,他們...