Scout YYF I POJ - 3744【矩阵乘法优化求概率】
题意:
一条路上有 $n$ 个地雷,YYF 从位置 $1$ 出发,走一步的概率为 $p$,走两步的概率是 $(1-p)$。求 YYF 能顺利通过这条路的概率。
数据范围: $1\leq n \leq 10$,$0.25\leq p\leq 0.75$,输入的 $n$ 个位置的范围:$[1,1e8]$
分析:
从前往后推,状态转移方程:$dp[i]=dp[i-1]*p+dp[i-2]*(1-p)$,其中 $dp[1]=1$,有地雷的位置 $dp[i]=0$。如果直接算,必然超时,可以用矩阵快速幂分段优化。
坑点:输入的 $n$ 个位置不一定有序。
代码:
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 #include <algorithm>
 using namespace std;
 ];
 double p;
 struct matrix
 {
     ][];
     void clc()
     {
         ;i<;i++)
             ;j<;j++)
                 mat[i][j]=;
     }
     void eye()
     {
         ;i<=;i++)
             mat[i][i]=;
     }
     matrix operator *(const matrix b)const
     {
         matrix res;
         res.clc();
         ;i<=;i++)
         {
             ;k<=;k++)
             {
                 ;j<=;j++)
                     res.mat[i][j]=(res.mat[i][j]+mat[i][k]*b.mat[k][j]);
             }
         }
         return res;
     }
 };
 matrix mpow(matrix a,int b)
 {
     matrix res;
     res.clc();
     res.eye();
     while(b)
     {
         )
             res=res*a;
         a=a*a;
         b>>=;
     }
     return res;
 }
 void init(matrix &a)
 {
     a.clc();
     a.mat[][]=;
 }
 void init2(matrix &b)
 {
     b.clc();
     b.mat[][]=p;
     b.mat[][]=;
     b.mat[][]=-p;
 }
 int main()
 {
     int n,x,last;
     while(scanf("%d%lf",&n,&p)!=EOF)
     {
         ;i<=n;i++)
             scanf("%d",&a[i]);
         sort(a+,a++n);
         matrix A,B;
         init(A);
         init2(B);
         ;
         last=;
         ;i<=n;i++)
         {
             A=A*mpow(B,a[i]-last);//cout<<"A="<<A.mat[1][2]<<endl;
             A.mat[][]=;
             last=a[];
         }
         A=A*B;
         printf(][]);
     }
     ;
 }
Scout YYF I POJ - 3744【矩阵乘法优化求概率】的更多相关文章
- Scout YYF I POJ - 3744(矩阵优化)
		题意:一条路上有n个地雷,给出地雷的位置.某人从起点(位置1)出发,走一步的概率是p,走两步的概率是(1-p),然后问有多少概率走过这个雷区. 思路: 只要走过最后一个地雷就代表走过雷区了. 而每到 ... 
- Scout YYF I POJ - 3744(概率dp + 矩阵快速幂)
		题意: 一条路上有n个地雷,你从1开始走,单位时间内有p的概率走一步,1-p的概率走两步,问安全通过这条路的概率 解析: 很容易想到 dp[i] = p * dp[i-1] + (1 - p) * d ... 
- Scout YYF I POJ - 3744(概率dp)
		Description YYF is a couragous scout. Now he is on a dangerous mission which is to penetrate into th ... 
- 概率dp(A - Scout YYF I POJ - 3744 )
		题目链接:https://cn.vjudge.net/contest/276241#problem/A 题目大意:首先输入n和p,n代表地雷的个数,p代表走一步的概率,1-p代表走两步的概率,然后问你 ... 
- [BZOJ 1009] [HNOI2008] GT考试 【AC自动机 + 矩阵乘法优化DP】
		题目链接:BZOJ - 1009 题目分析 题目要求求出不包含给定字符串的长度为 n 的字符串的数量. 既然这样,应该就是 KMP + DP ,用 f[i][j] 表示长度为 i ,匹配到模式串第 j ... 
- [转]OpenBLAS项目与矩阵乘法优化
		课程内容 OpenBLAS项目介绍 矩阵乘法优化算法 一步步调优实现 以下为公开课完整视频,共64分钟: 以下为公开课内容的文字及 PPT 整理. 雷锋网的朋友们大家好,我是张先轶,今天主要介绍一下我 ... 
- 【BZOJ 3326】[Scoi2013]数数 数位dp+矩阵乘法优化
		挺好的数位dp……先说一下我个人的做法:经过观察,发现这题按照以往的思路从后往前递增,不怎么好推,然后我就大胆猜想,从前往后推,发现很好推啊,维护四个变量,从开始位置到现在有了i个数 f[i]:所有数 ... 
- bzoj4870: [Shoi2017]组合数问题(DP+矩阵乘法优化)
		为了1A我居然写了个暴力对拍... 那个式子本质上是求nk个数里选j个数,且j%k==r的方案数. 所以把组合数的递推式写出来f[i][j]=f[i-1][j]+f[i-1][(j-1+k)%k].. ... 
- 形态形成场(矩阵乘法优化dp)
		形态形成场(矩阵乘法优化dp) 短信中将会涉及前\(k\)种大写字母,每个大写字母都有一个对应的替换式\(Si\),替换式中只会出现大写字母和数字,比如\(A→BB,B→CC0,C→123\),代表 ... 
随机推荐
- pandas 使用总结
			import pandas as pd import numpy as np ## 从字典初始化df ipl_data = {'Team': ['Riders', 'Riders', 'Devils' ... 
- Codeforces_723_D
			http://codeforces.com/problemset/problem/723/D dfs找出每个湖,保存坐标和大小,按大小排序,填充湖即可,注意湖的数量最多会有1250个. #includ ... 
- BZOJ 1042 [HAOI2008]硬币购物(完全背包+容斥)
			题意: 4种硬币买价值为V的商品,每种硬币有numi个,问有多少种买法 1000次询问,numi<1e5 思路: 完全背包计算出没有numi限制下的买法, 然后答案为dp[V]-(s1+s2+s ... 
- The related functions and attributes for managing attributes - 操作属性的重要属性和函数
			特性 property 都是类属性(静态变量),但是特性管理的其实是实例属性的存取, ****** 回顾 -'类方法' classmethod 和 '静态方法' staticmethod 皆可以访问类 ... 
- Method Resolve Order (MRO) - 类对象属性的解析顺序
			Method Resolve Order (MRO) - 类对象属性的解析顺序 Python 支持多重继承, 此时就需要解决按照何种顺序来解析属性的问题.类的继承关系在一个特殊的类属性中指定(__mr ... 
- frp内网穿透协助内网程序(如微信相关)开发
			众所周知,在本机上开发微信相关的程序,很不方便,因为拨号IP随机,而且很多端口不支持,如80,443 所以,有必要使用一台外网主机中转. frp就可以解决此问题 安装环境,外网服务器:腾讯云,cent ... 
- [源码分析] 从源码入手看 Flink Watermark 之传播过程
			[源码分析] 从源码入手看 Flink Watermark 之传播过程 0x00 摘要 本文将通过源码分析,带领大家熟悉Flink Watermark 之传播过程,顺便也可以对Flink整体逻辑有一个 ... 
- php oci 和 pdo_oci 安装
			安装非常复杂,必须记录 CentOS服务器上已有相关环境:apache.php5 需要安装:1.oracle客户端.2.oci8扩展.3.pdo_oci扩展. 一. 准备文件 1) oracle客户端 ... 
- CentOS 7.6下安装 NVM 管理不同版本的 Node.js
			学习网站:https://www.linuxidc.com/Linux/2019-10/160918.htm 
- C#基础知识学习(1)方法的重写和隐藏
			做了1年多了C#,发现些项目过程中很多基础东西都不是很清晰,基础不够牢固.现在开始复习基础知识并做重点记录 方法需要被重写的时候,可以在方法前加入virtual使方法变成虚方法. 这样我们可以重新写个 ... 
