计蒜客 Weather Patterns 2017icpc南宁赛区

来源:互联网 发布:mac word 公式编辑器 编辑:程序博客网 时间:2024/05/29 10:29

https://nanti.jisuanke.com/t/17308

题意:比赛最后一小时半,还一直在看没看懂。最后去做了G题计算几何。活脱脱一道阅读理解吧。一共四种天气,输入4*4的矩阵。a[i][j]表示今天i天气明天j天气的概率。接下来输入两行,每一行表示每天的天气,问这样的天气序列出现的概率。接下来还有两行,表示连续天数是i天气的期望,就是连续一天是i天气的概率+连续两天是i天气的概率+...+连续一天是n天气的概率。输出保留八位小数。

题解:看懂题意。

代码:

#include<set>#include<map>#include<stack>#include<queue>#include<vector>#include<string>#include<bitset>#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>#include<ctime>#include<iomanip>#include<iostream>#define debug cout<<"aaa"<<endl#define d(a) cout<<a<<endl#define pb push_back#define mem(a,b) memset(a,b,sizeof(a))#define LL long long#define lson l,mid,root<<1#define rson mid+1,r,root<<1|1#define MIN_INT (-2147483647-1)#define MAX_INT 2147483647#define MAX_LL 9223372036854775807i64#define MIN_LL (-9223372036854775807i64-1)using namespace std;const int N = 4 + 5;const int mod = 1000000000 + 7;const double eps = 1e-9;double a[N][N];int main(){int x,pre;char c;double ans,temp;for(int i=1;i<=4;i++){for(int j=1;j<=4;j++){scanf("%lf",&a[i][j]);}}for(int i=1;i<=2;i++){ans=1,pre=0;while(scanf("%d",&x)){if(pre==0){pre=x;continue;} c=getchar();ans*=a[pre][x];pre=x;if(c=='\n') break;}printf("%.8f\n",ans);}for(int i=1;i<=2;i++){ans=temp=1;scanf("%d",&x);while(temp>=eps){temp*=a[x][x];ans+=temp;}printf("%.8f\n",ans);} return 0;}


阅读全文
0 0
原创粉丝点击