CodeForces 24D Broken robot (三对角矩阵消元)
来源:互联网 发布:apache 下载 编辑:程序博客网 时间:2024/06/07 00:38
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#include <vector>using namespace std;#define N 1020int n, m, x, y;double dp[N][N];void ele(double x[], double a[], double b[], double c[], double r[]) {static double y[N], z[N];y[1] = c[1] / b[1], z[1] = r[1] / b[1];for(int i = 2; i <= m; ++i) {y[i] = c[i] / (b[i] - y[i-1] * a[i]);z[i] = (r[i] - z[i-1] * a[i]) / (b[i] - y[i-1] * a[i]);}x[m] = z[m];for(int i = m - 1; i >= 1; --i) x[i] = z[i] - y[i] * x[i + 1];}void calc(double x[], double y[]) {static double a[N], b[N], c[N], r[N];b[1] = 2.0 / 3; c[1] = -1.0 / 3; r[1] = 1 + y[1] / 3;for(int i = 2; i < m; ++i) {a[i] = -1.0 / 4;b[i] = 3.0 / 4;c[i] = -1.0 / 4;r[i] = 1 + y[i] / 4;}a[m] = -1.0 / 3; b[m] = 2.0 / 3; r[m] = 1 + y[m] / 3;ele(x, a, b, c, r);}int main() {scanf("%d%d%d%d", &n, &m, &x, &y);n = n - x + 1;if(m == 1) {printf("%d\n", 2 * n - 2);return 0;}for(int i = n - 1; i >= 1; --i) {calc(dp[i], dp[i + 1]);}printf("%.12lf\n", dp[1][y]);return 0;}
0 0
- CodeForces 24D Broken robot (三对角矩阵消元)
- CodeForces 24D Broken robot(三对角矩阵)
- CodeForces 24D Broken robot(概率dp+三对角矩阵)
- CodeForces 24D Broken robot (概率DP)
- Broken robot CodeForces
- 三对角矩阵
- CF 24 D. Broken robot dp(概率,高斯消元)
- 数据结构--数组-三对角矩阵
- D. Broken robot DP求期望
- 三对角矩阵压缩存储--注意对角元素的下标
- Broken robot (概率dp)
- 对角矩阵(diagonal matrix)
- CodeForces 370D Broken Monitor
- CodeForces-171D Broken checker
- 三元组表示三对角矩阵
- 对角矩阵
- 对角矩阵
- codeforces 171D Broken checker (多次尝试)
- java泛型之泛型数组。
- 14.6.3 Grouping DML Operations with Transactions 组DML操作
- 109. Convert Sorted List to Binary Search Tree
- 对java中static关键字的理解
- Linux运维必学必会(一)- sed命令
- CodeForces 24D Broken robot (三对角矩阵消元)
- 5-1 厘米换算英尺英寸 (15分)
- 最长公共子串
- Leetcode7. Reverse Integer
- 文本特征提取方法的研究
- Spring面试问答Top 25
- 利用反射修改drawerLayout滑动边距
- jboss eap 6.3 域(Domain)模式配置
- 动态代理proxy