(抄別人的要求輸入一篇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 另一題...