LightOJ1030 Discovering Gold
题目链接:https://vjudge.net/problem/LightOJ-1030
知识点: 概率与期望
解题思路:
设某一个点 \(i\) 能到达的点的个数为 \(x\),其上有金 \(g\),则该点上的期望 \(f(i) = g + \frac{f(i+1) + f(i+2) + ... + f(i+x)}{x}\).
AC代码:
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 const int maxn = 100+5; 5 double dp[maxn]; 6 7 int main(){ 8 int T,N; 9 scanf("%d",&T); 10 for(int t=1;t<=T;t++){ 11 scanf("%d",&N); 12 for(int i=1;i<=N;i++) scanf("%lf",&dp[i]); 13 for(int i=N;i>0;i--){ 14 int lim=min(N-i,6); 15 double tmp=0; 16 for(int j=1;j<=lim;j++) 17 tmp+=dp[i+j]; 18 if(lim) 19 dp[i]+=tmp/(double)lim; 20 } 21 printf("Case %d: %lf\n",t,dp[1]); 22 } 23 return 0; 24 }
“这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”