[SHOI2002]百事世界杯之旅(期望DP)

阅读: 评论:0

[SHOI2002]百事世界杯之旅(期望DP)

[SHOI2002]百事世界杯之旅(期望DP)

洛谷题目传送门

解题思路

设 f i f_i fi​表示还差 i i i个名字没收集,一直到收集齐的期望次数
f i = i n ( f i − 1 + 1 ) + n − i n ( f i + 1 ) f_i=frac{i}{n}(f_{i-1}+1)+frac{n-i}{n}(f_i+1) fi​=ni​(fi−1​+1)+nn−i​(fi​+1)
n × f i = i × ( f i − 1 + 1 ) + ( n − i ) × ( f i + 1 ) ntimes f_i=itimes (f_{i-1}+1)+(n-i)times (f_i+1) n×fi​=i×(fi−1​+1)+(n−i)×(fi​+1)
n × f i − ( n − i ) × f i = i × ( f i − 1 + 1 ) + ( n − i ) ntimes f_i-(n-i)times f_i=itimes (f_{i-1}+1)+(n-i) n×fi​−(n−i)×fi​=i×(fi−1​+1)+(n−i)
i × f i = i × f i − 1 + i + n − i itimes f_i=itimes f_{i-1}+i+n-i i×fi​=i×fi−1​+i+n−i
f i = f i − 1 + n i f_i=f_{i-1}+frac{n}{i} fi​=fi−1​+in​
线性递推即可,处理分数有点难受

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef double db;
struct node
{LL x,y;
}F[20]; 
LL n;
node Node(LL a,LL b)
{node T;T.x=a;T.y=b;return T;
}
LL gcd(LL a,LL b)
{if(b==0) return a;return gcd(b,a%b);
} 
node Add(node a,node b)
{LL x,y;y=a.y/gcd(a.y,b.y)*b.y;x=a.x*(y/a.y)+b.x*(y/b.y);LL d=gcd(x,y);x/=d;y/=d;return Node(x,y);
}
LL get(LL a)
{LL cnt=0;while(a){a/=10;cnt++;	}return cnt;
}
int main()
{
//	freopen("pepsi.in","r",stdin);
//	freopen("pepsi.out","w",stdout);cin>>n;node ans=Node(1,1);for(LL i=2;i<=n;i++)ans=Add(ans,Node(1,i));LL a=ans.x*n,b=ans.y;LL c=gcd(a,b);a/=c;b/=c;if(b==1)printf("%d",a);else{LL d=a/b;a-=d*b;LL e=get(b);LL f=get(d);for(int i=1;i<=f;i++)printf(" ");printf("%lldn%lld",a,d);for(LL i=1;i<=e;i++)printf("-");printf("n");for(int i=1;i<=f;i++)printf(" ");printf("%lld",b);}return 0;
}

本文发布于:2024-02-02 03:49:30,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170681748641171.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:百事   世界杯   之旅   DP
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23