且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

NEFU 15 八阵图 (概率)

更新时间:2022-06-01 05:09:41

Click Here ~~

八阵图
Problem : 15
Time Limit : 1000ms
Memory Limit : 65536K
description
相传诸葛孔明御敌时以乱石堆成石阵,按遁甲分成生、伤、休、杜、景、死、惊、开八门,变化万端,可挡十万精兵。(见《三国演义》)。
现将诸葛亮的“八阵图”示意如下:

现在一般认为,八阵图就是一个巨大的迷宫。当某人陷入其中时,他可以从很多门中选择第i个门,经过ri天后即可以逃出八卦阵,也就是所谓的“生门”;也可能经过ri天后回到原处,也就是所谓的“死门”。如果你不识得八卦阵,你只有随机选择一个门;在八卦阵中,无法留下是否经过的标记,也就是说,你如果选择了“死门”回到原处,你还是只能随机选择一个门。
现在,富有冒险精神的你,携带了W天的粮食和水进入了诸葛亮的八卦阵。由于八卦阵变化多端,你不知道八卦阵的布置,你的运气平平(也就是你选择每个门的可能性相同),你能安全逃出八卦阵吗?
input
有多组测试数据,输入的第一行只有一个正整数T(1≤T≤100);
每组测试数据占三行,具有如下形式:
N r1 r2 rn
M rn+1 rn+m
W
其中N(0≤N≤1000)是生门的数目,M(0≤M≤1000)是死门的数目,W(0≤W≤10^9)是你携带了W天的粮食和水。ri(1≤i≤n+m, 0≤ri≤10,000)是生门或死门经过的天数。
所有的测试数据都是非负整数。
output
对于每组测试数据,输出”Alive”,如果你能在W天内走出八卦阵。否则,输出”Dead”。
注意:你走出八卦阵所需要的天数,是你随机选择后走出八卦阵所需要的天数的平均值。

sample_input
3
3 4 5 6
7 8 9 10 11 12 13 14
3
0
2 1 1
1
2 3 1
2 1 1
3

sample_output
Dead
Dead
Alive
hint
概率
source
湖大

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>
using namespace std;

#define MM(a) memset(a,0,sizeof(a))

typedef long long LL;
typedef unsigned long long ULL;
const int maxn = 3e3+5;
const int mod = 1e9+7;
const double eps = 1e-8;
const int INF = 0x3f3f3f3f;
LL gcd(LL a, LL b)
{
    if(b == 0)
        return a;
    return gcd(b, a%b);
}

int m[maxn], n[maxn];
int main()
{
    int T, N, W, M;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d", &N);
        int summ = 0, sumn = 0;
        for(int i=0; i<N; i++)
        {
            scanf("%d",&n[i]);
            sumn += n[i];
        }
        scanf("%d", &M);
        for(int i=0; i<M; i++)
        {
            scanf("%d",&m[i]);
            summ += m[i];
        }
        scanf("%d", &W);
        if(N == 0)
        {
            puts("Dead");
            continue;
        }
        int ave = (sumn+summ)/N;
        if(ave <= W)
            puts("Alive");
        else
            puts("Dead");
    }
    return 0;
}