POJ 3744(矩阵概率dp)
来源:互联网 发布:unity3d灯光阴影闪烁 编辑:程序博客网 时间:2024/06/03 00:34
#pragma warning(disable:4996)#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<vector>#include<algorithm>#include<iostream>#include<time.h>using namespace std;struct Matrix{ double mat[2][2];};Matrix mul(Matrix a, Matrix b){ Matrix ret; for (int i = 0; i<2; i++) for (int j = 0; j<2; j++) { ret.mat[i][j] = 0; for (int k = 0; k<2; k++) ret.mat[i][j] += a.mat[i][k] * b.mat[k][j]; } return ret;}Matrix pow_M(Matrix a, int n){ Matrix ret; memset(ret.mat, 0, sizeof(ret.mat)); for (int i = 0; i<2; i++)ret.mat[i][i] = 1; Matrix temp = a; while (n) { if (n & 1)ret = mul(ret, temp); temp = mul(temp, temp); n >>= 1; } return ret;}int x[30];int vs_main(){ int n; double p; while (scanf("%d%lf", &n, &p) != EOF)//POJ上G++要改为cin输入 { for (int i = 0; i<n; i++) scanf("%d", &x[i]); sort(x, x + n); double ans = 1; Matrix tt; tt.mat[0][0] = p; tt.mat[0][1] = 1 - p; tt.mat[1][0] = 1; tt.mat[1][1] = 0; Matrix temp; temp = pow_M(tt, x[0] - 1); ans *= (1 - temp.mat[0][0]); for (int i = 1; i<n; i++) { if (x[i] == x[i - 1])continue; temp = pow_M(tt, x[i] - x[i - 1] - 1); ans *= (1 - temp.mat[0][0]); } printf("%.7lf\n", ans);//POJ上G++要改为%.7f } return 0;}int main() { int start = clock(); //freopen("in.txt", "r", stdin); //freopen("out.txt","w",stdout); printf("#===================#\n"); vs_main(); printf("#===================#\n"); printf("Time:%.3lf\n", double(clock() - start) / CLOCKS_PER_SEC); //system("pause"); return 0;}
0 0
- POJ 3744(矩阵概率dp)
- POJ 3744 概率dp+矩阵
- poj 3744 Scout YYF I(矩阵优化概率DP)
- 【POJ】3744 Scout YYF I (概率DP+矩阵优化)
- POJ 3744 Scout YYF I (概率dp+矩阵优化)
- POJ 题目3744(矩阵优化概率DP)
- POJ 3744 Scout YYF(概率DP+矩阵快速幂)
- POJ 3744 Scout YYF I (矩阵相乘+概率DP)
- poj 3744 矩阵加速--概率DP
- POJ 3744 概率dp+矩阵快速幂
- poj 3744 Scout YYF I(概率DP&矩阵快速幂)
- poj 3744 Scout YYF I(概率dp+矩阵快速幂)
- POJ 3744 Scout YYF I 概率DP + 矩阵快速幂
- poj 3744 Scout YYF I(概率dp+矩阵快速幂)
- Poj 3744 Scout YYF I (概率DP 矩阵优化)
- POJ 3744 Scout YYF I 概率dp+矩阵快速幂
- POJ 3744 Scout YYF I 概率dp 矩阵快速幂
- Poj 3744 Scout YYF I(矩阵概率DP)
- Fibonacci
- 在一个类中的static代码块,代码块,构造方法执行顺序
- linux0.00 代码阅读笔记
- 二叉树的遍历
- 邮箱激活账号与忘记密码
- POJ 3744(矩阵概率dp)
- 连续子数组的最大和
- Valid Sudoku
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- 【leetcode】216. Combination Sum III
- javah类不存在
- eclipse环境配置maven项目
- Objective-C 类别使用
- Hive on Spark源码分析(六)—— RemoteSparkJobMonitor与JobHandle