P2719 搞笑世界杯
Problem
Solution1
看到题目,很容易想到用 dp。
设
易得状态转移方程:
注意初始状态:
Code1
时间复杂度
/*dp*/
#include<bits/stdc++.h>
using namespace std;
int n;
double f[1251][1251];
int main()
{
cin>>n;
n/=2; //因为题目给出的是2n
for(int i=2;i<=n;i++)
f[i][0]=1,f[0][i]=1; //初始化
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
f[i][j]=f[i-1][j]/2+f[i][j-1]/2; //动态规划
printf("%.4lf",f[n][n]);
return 0;
}
Solution2
这题其实还有排列组合的方法。
最后两张不同的概率
最终答案为
Code2
直接计算即可,时间复杂度
/*排列组合*/
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;cin>>n;n>>=1;//因为题目给出的是2n
double ans=1.0;//即上述的P
for(int i=1;i<n;i++)
ans=ans*(i+n-1)/(i<<2);//暴力计算
printf("%.4lf",1-ans);
return 0;
}