LightOJ-1027-危険迷路(確率)

リンク:

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;
}

おすすめ

転載: www.cnblogs.com/YDDDD/p/11447609.html