LightOJ 1027 Dangerous Maze
经典概率,主要找递推式。
给你n个门,每次选一个,如果为正x就x秒后结束,否则-x秒后还要留在这里,求期望。
ANS=P_POS*POS_AVERAGE+P_NEG*(NEG_AVERAGE+ANS);
借出Y即可。
#include <iostream>
#include <functional>
#include <algorithm>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <utility>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <limits>
#include <memory>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
using namespace std;
int main()
{
long long T,ncas=1;
scanf ("%d",&T);
while (T--)
{
long long n,a[110],sum=0,p1=0,sum_p1=0,p2=0,sum_p2=0;
scanf ("%lld",&n);
for (long long i=0;i<n;i++)
{
scanf ("%lld",&a[i]);
if (a[i]>0) {p1++;sum_p1+=a[i];}
else {p2++;sum_p2+=(-a[i]);}
}
long long u,v;
u=sum_p1+sum_p2;
v=n-p2;
if (p1!=0)
{
long long mmm=__gcd(u,v);
printf ("Case %lld: %lld/%lld\n",ncas++,u/mmm,v/mmm);
}
else printf ("Case %lld: inf\n",ncas++);
}
return 0;
}