摘要: 思路:简单的概率DPdp[i]表示从i到n的期望步数:当i没有飞机时dp[i]=∑p[k]*p[i+k]+1;当i有飞机时dp[i]=dp[fly[i]].代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 10000511 using namespace std;12 double p[MAX];13 int fly[MAX];14 int main(){15 . 阅读全文
posted @ 2013-08-07 22:09 _随心所欲_ 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 思路:这题的递推方程有点麻烦!!dp[i]表示分数为i的期望步数,p[k]表示得分为k的概率,p0表示回到0的概率:dp[i]=Σ(p[k]*dp[i+k])+dp[0]*p0+1设dp[i]=A[i]*dp[0]+B[i]带入的:dp[i]=∑(pk*A[i+k]*dp[0]+pk*B[i+k])+dp[0]*p0+1 =(∑(pk*A[i+k])+p0)dp[0]+∑(pk*B[i+k])+1; 明显A[i]=(∑(pk*A[i+k])+p0) B[i]=∑(pk*B[i+k])+1 先递推求得A[0]和B[0]. 那么 dp[0]=B[0]/(1-A[0]);链接:http://acm. 阅读全文
posted @ 2013-08-07 21:02 _随心所欲_ 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 思路:仔细读懂题意。dp[i][j]表示第i个bug,第j个子系统;那么状态转移就有4种可能:dp[i][j],概率是p1=i/n*j/s;dp[i+1][j],概率是p2=(n-i)/n*j/s;dp[i][j+1],概率是p3=i/n*(s-j)/s;dp[i+1][j+1],概率是p4=(n-i)/n*(s-j)/s;那么就有:dp[i][j]=p1*(dp[i][j]+1)+p2*(dp[i+1][j]+1)+p3*(dp[i][j+1]+1)+p4*(dp[i+1][j+1]+1) //注意这里加1是因为本次操作花费一天=p1*dp[i][j]+p2*dp[i+1][j]+p3*dp 阅读全文
posted @ 2013-08-07 19:51 _随心所欲_ 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 容易推出递推关系f[n]=p*f[n-1]+(1-p)*f[n-2];可以通过矩阵快速幂求得第n步的概率。对于给出的点an[1],an[2]……可以分段求出:1~an[1];an[1]+1~an[2];……这样算出到达雷点的概率,然后用1减去就是成功通过雷点的概率,最后运用将每段成功通过的概率相乘即可!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 10000 阅读全文
posted @ 2013-08-07 15:37 _随心所欲_ 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 思路:五边形数定理!!!五边形数定理是一个由欧拉发现的数学定理,描述欧拉函数展开式的特性。欧拉函数的展开式如下:亦即欧拉函数展开后,有些次方项被消去,只留下次方项为1, 2, 5, 7, 12, ...的项次,留下来的次方恰为广义五边形数。若将上式视为幂级数,其收敛半径为1,不过若只是当作形式幂级数(formal power series)来考虑,就不会考虑其收敛半径。欧拉函数的倒数是分割函数的母函数,亦即:其中为k的分割函数。上式配合五边形数定理,可以得到考虑项的系数,在 n>0 时,等式右侧的系数均为0,比较等式二侧的系数,可得因此可得到分割函数p(n)的递归式以n=10为例这就是所 阅读全文
posted @ 2013-08-07 09:42 _随心所欲_ 阅读(422) 评论(0) 推荐(0) 编辑