hdu5236 Article(貪心 概率dp)

2021-07-23 13:53:40 字數 735 閱讀 4672

(抄別人的要求輸入一篇n個字元的文章,對所有非負整數i:

每到第i+0.1秒時可以輸入乙個文章字元

每到第i+0.9秒時有p的概率崩潰(回到開頭或者上乙個存檔點)

每到第i秒有一次機會可以選擇按下x個鍵存檔,或者不存

列印完整篇文章之後必須存檔一次才算完成

輸入多組n,p,x選擇最佳策略使得輸入完整篇文章時候按鍵的期望最小,輸出此期望

dp[i]表示敲i個字元的期望,不考慮儲存的情況的dp

dp[i]=dp[i-1]+p*(1+dp[i])+(1-p);

化簡為: dp[i] = (dp[i-1] + 1) / ( 1- p)

然後貪心列舉儲存次數,如果不能均勻分段,那麼要利用貪心做成一些是x的段,一些是x+1的段。

#include 

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

int n,x;

double p;

double dp[100010];

int main()

printf("case #%d: %.6lf\n",kase++,ans);

}return

0;}

hdu1285 hdu4857 拓撲排序

一 原題內容 problem description 有n個比賽隊 1 n 500 編號依次為1,2,3,n進行比賽,比賽結束後,裁判委員會要將所有參賽隊伍從前往後依次排名,但現在裁判委員會不能直接獲得每個隊的比賽成績,只知道每場比賽的結果,即p1贏p2,用p1,p2表示,排名時p1在p2之前。現在...

樹狀陣列 hdu2689 hdu2838

題意 給定乙個正整數n,和乙個1 n的乙個排列,每個數可以和旁邊的兩個數的任意乙個交換,每交換一次總次數就要加一,問將這個排列轉換成乙個遞增的排列需要多少次交換?題意可以轉換成求這個排列的逆序對數。include include include include using namespace std...

hdu2068 hdu 2049 錯排組合

這部分涉及的知識為組合數和錯排 參考 比較簡單 hdu2068 include include int64 c int n,int m 組合數公式 return u d main sum for i 3 i 13 i f i i 1 f i 1 f i 2 while scanf d n n 另一題...