着实被批评了一下,自己的数论确实太烂了。

  题意:一条路上,有n个炸弹,给出每个炸弹的位置,一次走一步的概率是p,走两步的概率是1-p。求安全走完的概率。

  定义dp[i] = dp[i-1]*p + dp[i-2]*(1-p)

  由于路很长,不能递推。

  n个炸弹就把路分成了n+1段路,计算走完一段路安全的概率就行,然后相乘。

             | p ,  1 |

  | dp[i-1],dp[i-2] | * | 1-p,0 |   = | dp[i],dp[i-1] |

  求安全走完一段长为L路的概率,就将矩阵乘L次即可,由于L可能很大,用二分法计算。

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct mat{
double a[][];
mat()
{for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=0;
}
}; mat e;
int n;
double p;
int num[];
mat mul(mat a,mat b)
{
mat ans;
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
ans.a[i][j]+=a.a[i][k]*b.a[k][j];
return ans;
}
double matPow(mat a,int k)
{
mat ans=e;
while(k)
{
if(k&) ans=mul(ans,a);
a=mul(a,a);
k=k>>;
}
return ans.a[][];
}
int main()
{
e.a[][]=;e.a[][]=;
e.a[][]=;e.a[][]=;
while(scanf("%d%lf",&n,&p)!=EOF)
{
num[]=;
for(int i=;i<=n;i++) scanf("%d",&num[i]);
sort(num,num+n+);
double ans=;
mat res;
res.a[][]=p;res.a[][]=;
res.a[][]=-p;res.a[][]=;
for(int i=;i<=n;i++)
ans*=(1.0-matPow(res,num[i]-num[i-]-));
printf("%.7lf\n",ans);
}
return ;
}

poj 3744 矩阵 高斯消元的更多相关文章

  1. POJ 1830 开关问题 【01矩阵 高斯消元】

    任意门:http://poj.org/problem?id=1830 开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1 ...

  2. POJ 2947-Widget Factory(高斯消元解同余方程式)

    题目地址:id=2947">POJ 2947 题意:N种物品.M条记录,接写来M行,每行有K.Start,End,表述从星期Start到星期End,做了K件物品.接下来的K个数为物品的 ...

  3. BZOJ 3503: [Cqoi2014]和谐矩阵( 高斯消元 )

    偶数个相邻, 以n*m个点为变量, 建立异或方程组然后高斯消元... O((n*m)^3)复杂度看起来好像有点大...但是压一下位的话就是O((n*m)^3 / 64), 常数小, 实际也跑得很快. ...

  4. 矩阵&&高斯消元

    矩阵运算: \(A\times B\)叫做\(A\)左乘\(B\),或者\(B\)右乘\(A\). 行列式性质: \(1.\)交换矩阵的两行(列),行列式取相反数. \(2.\)某一行元素都\(\ti ...

  5. BZOJ3503:[CQOI2014]和谐矩阵(高斯消元,bitset)

    Description 我们称一个由0和1组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的1.一个元素相邻的元素包括它本 身,及他上下左右的4个元素(如果存在). 给定矩阵的行数和列数,请计算并输 ...

  6. 【Luogu】P3389高斯消元模板(矩阵高斯消元)

    题目链接 高斯消元其实是个大模拟qwq 所以就着代码食用 首先我们读入 ;i<=n;++i) ;j<=n+;++j) scanf("%lf",&s[i][j]) ...

  7. CodeForces - 24D :Broken robot (DP+三对角矩阵高斯消元 随机)

    pro:给定N*M的矩阵,以及初始玩家位置. 规定玩家每次会等概率的向左走,向右走,向下走,原地不动,问走到最后一行的期望.保留4位小数. sol:可以列出方程,高斯消元即可,发现是三角矩阵,O(N* ...

  8. P3164 [CQOI2014]和谐矩阵(高斯消元 + bitset)

    题意:构造一个$n*m$矩阵 使得每个元素和上下左右的xor值=0 题解:设第一行的每个元素值为未知数 可以依次得到每一行的值 然后把最后一行由题意条件 得到$m$个方程 高斯消元解一下 bitset ...

  9. poj 2065 SETI 高斯消元

    看题就知道要使用高斯消元求解! 代码如下: #include<iostream> #include<algorithm> #include<iomanip> #in ...

随机推荐

  1. SPOJ 1811 Longest Common Substring (后缀自动机第一题,求两个串的最长公共子串)

    题目大意: 给出两个长度小于等于25W的字符串,求它们的最长公共子串. 题目链接:http://www.spoj.com/problems/LCS/ 算法讨论: 二分+哈希, 后缀数组, 后缀自动机. ...

  2. 13年山东省赛 Boring Counting(离线树状数组or主席树+二分or划分树+二分)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 2224: Boring Counting Time Limit: 3 Sec   ...

  3. imadjust函数分析一

    声明:本文涉及到的行数皆指本文提供的附件imadjust.m的代码中行数 本文只讨论imadjust函数是一种用法,即 J = IMADJUST(I,[LOW_IN; HIGH_IN],[LOW_OU ...

  4. Python学习(六) Python数据类型:字典(重要)

    字典dict: 字典其实就相当于java里面的Map,用来存储键值对的.其中存储的数据时无序的. 假如有这样的数据: t1=['name','age','sex'] t2=['tom',30,'mal ...

  5. performance_schema 变量

    performance_schema 这个变量来控制performance_schema库的禁用和启用 1.performance_schema的值说明 performance_schema=1 表示 ...

  6. sql 数据库优化

    数据库优化: 1. 显示磁盘秘密: DBCC SHOWCONTIG(B2B_ZRate)  清理磁盘密度 DBCC DBREINDEX(B2B_ZRate) 2.

  7. Android 打开URL

    打开链接 Intent it = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com")); it.set ...

  8. Linux系统编程(4)——文件与IO之ioctl函数

    ioctl是设备驱动程序中对设备的I/O通道进行管理的函数.所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率.马达的转速等等.它的参数个数如下:int ioctl(int ...

  9. UVA_Rotation Game<旋转游戏> UVA 1343

    The rotation game uses a # shaped board, which can hold 24 pieces of square blocks (see Fig.1). The ...

  10. Valid Palindrome 解答

    Question Given a string, determine if it is a palindrome, considering only alphanumeric characters a ...