zoukankan      html  css  js  c++  java
  • 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 A题 Weather Patterns

    2017-09-25 15:49:45

    writer:pprp

    阅读理解,当时没有耐心去读,只要能读懂就大概可以做出来

    题意如下:

    有四种天气,

    State 1: snow

    State 2: rain

    State 3: cloudy

    State 4: sunny

    给你一个4*4矩阵代表aij 代表从状态i转化为状态j的概率,其中第一天的概率为1

    给你一串序列,问你从第一个到最后一个的概率

    给你一个数字,问你该状态的数学期望是多少?

    E(x)  =  1 + 2 * p + 3 * p * p + ..... 

    精度为1e-8,但是实际上要精确到1e-10

    代码如下:

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    int main()
    {
    //    freopen("in.txt","r",stdin);
        double mtx[5][5];
        double ans = 1;
        int neo;
    
        for(int i = 1; i <= 4; i++)
            for(int j = 1; j <= 4; j++)
                scanf("%lf",&mtx[i][j]);
        getchar();
        int pre, nex;
        pre = -1;
        while(1)
        {
            scanf("%d",&neo);
            char ch = getchar();
    
            if(pre == -1)
            {
                pre = neo;
            }
            else
            {
                nex = neo;
                ans *= mtx[pre][nex];
                pre = neo;
            }
            if(ch == '
    ')
                break;
        }
        printf("%.8lf
    ",ans);
        pre = -1;
        ans = 1;
    
        while(1)
        {
            scanf("%d",&neo);
            char ch = getchar();
    
            if(pre == -1)
            {
                pre = neo;
            }
            else
            {
                nex = neo;
                ans *= mtx[pre][nex];
                pre = neo;
            }
            if(ch == '
    ')
                break;
        }
        printf("%.8lf
    ",ans);
    
        int rec;
        scanf("%d",&rec);
        double pprp = mtx[rec][rec];
        ans = 1;
        double tmp = pprp;
        for(int i = 2;; i++)
        {
            double j = i*tmp;
            if(j < 1e-10)
                break;
            ans += j;
            tmp *= pprp;
        }
        printf("%.8lf
    ",ans*(1-pprp));
    
        scanf("%d",&rec);
        pprp = mtx[rec][rec];
        ans = 1;
        tmp = pprp;
        for(int i = 2;; i++)
        {
            double j = i*tmp;
            if(j < 1e-10)
                break;
            ans += j;
            tmp *= pprp;
        }
        printf("%.8lf
    ",ans*(1-pprp));
        return 0;
    }
  • 相关阅读:
    FAST特征点检测算法
    ORB算法介绍(转)
    centos 安装MATLAB :设置回环设备失败: 没有那个文件或目录
    特征检测和特征匹配方法
    摄像机标定-- 张正友标定推导详解
    sublime text plugins
    使用Sublime Text搭建python调试环境[转]
    python OS 模块
    python 守护进程,监控进程
    python 带正则的search 模块
  • 原文地址:https://www.cnblogs.com/pprp/p/7592252.html
Copyright © 2011-2022 走看看