• hdu 1437 天气情况【概率DP】


    天气情况

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 638    Accepted Submission(s): 257


    Problem Description
    如果我们把天气分为雨天,阴天和晴天3种,在给定各种天气之间转换的概率,例如雨天转换成雨天,阴天和晴天的概率分别为0.4,0.3,0.3.那么在雨天后的第二天出现雨天,阴天和晴天的概率分别为0.4,0.3,0.3.现在给你今天的天气情况,问你n天后的某种天气出现的概率.
     
    Input
    我们这里假设1,2,3分别代表3种天气情况,Pij表示从i天气转换到j天气的概率.
    首先是一个数字T表示数据的组数.
    每组数据以9个数开始分别是P11,P12,P13,……,P32,P33,接着下一行是一个数字m,表示提问的次数。每次提问有3个数据,i,j,n,表示过了n天从i天气情况到j天气情况(1<=i,j<=3 1<=n<=1000)。
     
    Output
    根据每次提问输出相应的概率(保留3位小数)。
     
    Sample Input
    1
    0.4 0.3 0.3 0.2 0.5 0.3 0.1 0.3 0.6
    3
    1 1 1
    2 3 1
    1 1 2
     
    Sample Output
    0.400
    0.300
    0.250
    Hint:如果GC提交不成功,可以换VC试试
     
    Author
    xhd

     题解:对于每一种情况都用前一天的所有情况的概率来分别乘以今天的单个情况的概率,如求第一天到第三天雨转到雨的概率,就需要用前一天(第二天)的所有情况,(雨,晴,阴)的概率来分别乘以今天的变雨的概率  同理,第二天的由第一天的推得

     vis[j][k][i]+=map[l][k]*vis[j][l][i-1];

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #define MAX 1100
    #include<math.h>
    #define DD double
    DD map[4][4];
    DD vis[4][4][MAX];
    using namespace std;
    int main()
    {
    	int n,m,j,i,t,k,l;
    	int a,b,c;
    	scanf("%d",&t);
    	while(t--)
    	{
    		memset(vis,0,sizeof(vis));
    		for(i=1;i<=3;i++)
    		    for(j=1;j<=3;j++)
    		    {
    		    	scanf("%lf",&map[i][j]);
    		    	vis[i][j][1]=map[i][j];
    		    }	 
    		for(i=2;i<1010;i++)//天数 
    		{
    			for(j=1;j<=3;j++)//由i天气 
    			{
    				for(k=1;k<=3;k++)//转到k天气 
    				{
    					for(l=1;l<=3;l++)//此循环用来循环天气的变化 
    					{
    						vis[j][k][i]+=map[l][k]*vis[j][l][i-1];
    						//第i天的j变k的概率   //map当前天每种天气转到k的概率
    						// vis[j][l][i-1]前一天每种天气的概率 
    					}
    				}
    			}
    		}		
    		scanf("%d",&n);
    		while(n--)
    		{
    			scanf("%d%d%d",&a,&b,&c);
    			printf("%.3lf
    ",vis[a][b][c]);
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    《信息安全专业导论》第十周学习总结
    《信息安全专业导论》第九周学习总结
    《信息安全导论》第八周学习总结
    《信息安全专业导论》第七周学习总结
    《信息安全专业导论》第六周学习总结
    《信息安全专业导论》第五周学习总结
    《信息安全专业导论》第四周学习总结
    《信息安全专业导论》第三周学习总结
    信息安全导论第二周学习总结
    计算机概论速读时的问题
  • 原文地址:https://www.cnblogs.com/tonghao/p/4996020.html
Copyright © 2020-2023  润新知