リンク:
https://vjudge.net/problem/LightOJ-1027#author=634579757
質問の意味:
あなたは迷路です。最初にあなたの前にn個のドアを見て。あなたが好きなドアを選択することができます。ドアを選択する確率は、すべてのドアのために同じです。
あなたは番目のドアを選択した場合、それは戻ってあなたがXI分に始まった同じ位置に行くことができますいずれか、またはXI分後迷路のあなたを取ることができます。あなたが同じ位置に戻ってきた場合、あなたは何も覚えていないことができます。だから、あなたが開始位置に来るたびに、あなたは何の過去の経験を持っていません。
今、あなたは迷路から抜け出すための予想時間を見つけたいです。
アイデア:
Xがタイムアウト0より大きいが望まれる場合に考慮する。1 / N- T、0が所望のタイムアウト未満である。1 / N-(T + D)。dは、所望の全体的なタイムアウトであることを特徴とします。
リリース1 = D / N- SUMT NE + / N- D. SUMT前記合計時間、およびABS(t)と。それらのNEはマイナスです。
コード:
#include <iostream>
#include <memory.h>
#include <string>
#include <istream>
#include <sstream>
#include <vector>
#include <stack>
#include <algorithm>
#include <map>
#include <queue>
#include <math.h>
#include <cstdio>
#include <set>
#include <iterator>
#include <cstring>
#include <assert.h>
using namespace std;
typedef long long LL;
int n;
int main()
{
int t, cnt = 0;
scanf("%d",&t);
while (t--)
{
scanf("%d", &n);
int sum = 0, ne = 0, v;
bool flag = false;
for (int i = 1;i <= n;i++)
{
scanf("%d", &v);
if (v > 0)
flag = true;
if (v < 0)
ne++;
sum += abs(v);
}
if (!flag)
printf("Case %d: inf\n", ++cnt);
else
printf("Case %d: %d/%d\n", ++cnt, sum/__gcd(sum, n-ne), (n-ne)/__gcd(sum, n-ne));
}
return 0;
}