您的位置:首页 > 理论基础 > 计算机网络

2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 A Weather Patterns

2017-09-27 22:30 465 查看
Consider a system which is described at any time as being in one of a set of NN distinct
states, 1,2,3,...,N1,2,3,...,N.
We denote the time instants associated with state changes as t
= 1,2,...t=1,2,...,
and the actual state at time tt as a_{ij}=p=[s_{i}=j\
|\ s_{i-1}=i], 1\le i,j \le Na​ij​​=p=[s​i​​=j ∣ s​i−1​​=i],1≤i,j≤N.
For the special case of a discrete, first order, Markovchain, the probabilistic description for the current state (at time tt)
and the predecessor state is s_{t}s​t​​.
Furthermore we only consider those processes being independent of time, thereby leading to the set of state transition probability a_{ij}a​ij​​ of
the form: with the properties a_{ij}
\geq 0a​ij​​≥0 and \sum_{i=1}^{N}
A_{ij} = 1∑​i=1​N​​A​ij​​=1.
The stochastic process can be called an observable Markovmodel. Now, let us consider the problem of a simple 4-state Markov model of weather. We assume that once a day (e.g., at noon), the weather is observed as being one of the following:
State 11:
snow

State 22:
rain

State 33:
cloudy

State 44:
sunny

The matrix A of state transition probabilities is:

A
= \{a_{ij}\}= \begin{Bmatrix} a_{11}&a_{12}&a_{13}&a_{14} \\ a_{21}&a_{22}&a_{23}&a_{24} \\ a_{31}&a_{32}&a_{33}&a_{34} \\ a_{41}&a_{42}&a_{43}&a_{44} \end{Bmatrix}A={a​ij​​}=​⎩​⎪​⎪​⎨​⎪​⎪​⎧​​​a​11​​​a​21​​​a​31​​​a​41​​​​​a​12​​​a​22​​​a​32​​​a​42​​​​​a​13​​​a​23​​​a​33​​​a​43​​​​​a​14​​​a​24​​​a​34​​​a​44​​​​​⎭​⎪​⎪​⎬​⎪​⎪​⎫​​

Given the model, several interestingquestions about weather patterns over time can be asked (and answered). We canask the question: what is the probability
(according to the given model) thatthe weather for the next k days willbe? Another interesting question we can ask: given that the model is in a knownstate, what is the expected number of consecutive days to stay
in that state?Let us define the observation sequence OOas O
= \left \{ s_{1}, s_{2}, s_{3}, ... , s_{k} \right \}O={s​1​​,s​2​​,s​3​​,...,s​k​​},
and the probability of the observation sequence OOgiven
the model is defined as p(O|model)p(O∣model).
Also, let the expected number of consecutive days to stayin state ii be E_{i}E​i​​.
Assume that the initial state probabilities p[s_{1}
= i] = 1, 1 \leq i \leq Np[s​1​​=i]=1,1≤i≤N.
Bothp(O|model)p(O∣model)and E_{i}E​i​​ are
real numbers.

Input Format

Line 11~44 for
the state transition probabilities. Line 55 for
the observation sequence O_{1}O​1​​,
and line 66 for
the observation sequence O_{2}O​2​​.
Line 77and
line 88 for
the states of interest to find the expected number of consecutive days to stay in these states.

Line 11: a_{11}\
a_{12}\ a_{13}\ a_{14}a​11​​ a​12​​ a​13​​ a​14​​

Line 22: a_{21}\
a_{22}\ a_{23}\ a_{34}a​21​​ a​22​​ a​23​​ a​34​​

Line 33: a_{31}\
a_{32}\ a_{33}\ a_{34}a​31​​ a​32​​ a​33​​ a​34​​

Line 44: a_{41}\
a_{42}\ a_{43}\ a_{44}a​41​​ a​42​​ a​43​​ a​44​​

Line 55: s_{1}\
s_{2}\ s_{3}\ ...\ s_{k}s​1​​ s​2​​ s​3​​ ... s​k​​

Line 66: s_{1}\
s_{2}\ s_{3}\ ...\ s_{l}s​1​​ s​2​​ s​3​​ ... s​l​​

Line 77: ii

Line 88: jj

Output Format

Line 11 and
line 22 are
used to show the probabilities of the observation sequences O_{1}O​1​​and O_{2}O​2​​ respectively.
Line 33 and
line 44 are
for the expected number of consecutive days to stay in states ii and jj respectively.

Line 11: p[O_{1}
| model]p[O​1​​∣model]

Line 22: p[O_{2}
| model]p[O​2​​∣model]

Line 33: E_{i}E​i​​

Line 44: E_{j}E​j​​

Please be reminded that the floating number should accurate to 10^{-8}10​−8​​.

样例输入

0.4 0.3 0.2 0.1
0.3 0.3 0.3 0.1
0.1 0.1 0.6 0.2
0.1 0.2 0.2 0.5
4 4 3 2 2 1 1 3 3
2 1 1 1 3 3 4
3
4


样例输出

0.00004320
0.00115200
2.50000000
2.00000000



题目来源

2017
ACM-ICPC 亚洲区(南宁赛区)网络赛
题意:先给你4 * 4 的矩阵,表示天气 i 到天气 j 转变的概率,然后输入 k 个数字,以 ‘\n’ 表示输入结束,这 k 个数字的意思以
4 4 3 2 2 1 1 3 3

这组数字举例,其实就是天气从 4 转变为 4,然后从 4 转变为 3,然后从 3 转变为 2,然后从 2 转变为 2,然后从 2 转变为 1,然后从 1 转变为 1,然后从1 转变为 3,然后从3 转变为 3的概率是多少。

这样的输入数据有两组

然后输入两个数字 i 和 j ,这两个数字都表示天气的状况为 i 和 j 一直不变,不管天数增加多少,然后要你求一直不变的数学期望是多少。

附代码:

#include <cstdio>

#include <cstring>

#include <algorithm>

#include <iostream>

#include <cmath>

#include <vector>

#define mem(a, b) memset(a, b, sizeof(a))

using namespace std;

typedef long long LL;

///o(っ。Д。)っ AC万岁!!!!!!!!!!!!!!

const int maxn = 10;

double maps[maxn][maxn] = {};

int main()

{

    for(int i = 1; i <= 4; i++)

    {

        for(int j = 1; j <= 4; j++)

        {

            scanf("%lf", &maps[i][j]);

        }

    }

    double pp = 1.0;

    int d1, d2;

    char ch;

    scanf("%d", &d1);

    while(scanf("%d%c", &d2, &ch) != EOF)

    {

        pp *= maps[d1][d2];

        d1 = d2;

        if(ch == '\n') break;

    }

    printf("%.8lf\n", pp);

    pp = 1.0;

    scanf("%d", &d1);

    while(scanf("%d%c", &d2, &ch) != EOF)

    {

        pp *= maps[d1][d2];

        d1 = d2;

        if(ch == '\n') break;

    }

    printf("%.8lf\n", pp);

    scanf("%d", &d1);

    pp = maps[d1][d1];

    double sum = 0.0;

    while(pp >= 0.000000001)

    {

        sum += pp;

        pp *= maps[d1][d1];

    }

    printf("%.8lf\n", sum + 1.0);

    sum = 0.0;

    scanf("%d", &d2);

    pp = maps[d2][d2];

    while(pp >= 0.000000001)

    {

        sum += pp;

        pp *= maps[d2][d2];

    }

    printf("%.8lf\n", sum + 1.0);

    return 0;

}

/*

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐