1.POJ 3744 Scout YYF I

经典的dp模型,但是要用到快速矩阵幂加速,分段的思想

 # include <stdio.h>
# include <algorithm>
# include <string.h>
# include <iostream>
using namespace std; int mines[]; void matrixMulti(double a[][], double b[][]){
double i,j,k,l;
i = a[][]*b[][]+a[][]*b[][];
j = a[][]*b[][]+a[][]*b[][];
k = a[][]*b[][]+a[][]*b[][];
l = a[][]*b[][]+a[][]*b[][];
a[][]=i,a[][]=j,a[][]=k,a[][]=l;
} double quickPow(const double p, int x){
if(x == -){
return 1.0;
}
double a[][] = {, , -p, p}, res[][] = {,,,};
while(x){
//printf("this 3\n");
if(x&){
matrixMulti(res, a);
}
x/=;
matrixMulti(a,a);
}
return res[][]*(-p);
} int main(){
int num;
double p, result;
while(scanf("%d%lf",&num, &p) != EOF){
memset(mines, , sizeof(mines));
for(int i = ; i <= num; ++i){
scanf("%d", mines + i);
}
if(mines[] == ){
printf("%.7f\n", 0.0);
continue;
}
mines[] = ;
result = 1.0;
sort(mines, mines+num+);
for(int i = ; i <= num; ++i){
result *= quickPow(p, mines[i] - mines[i - ] - );
}
if(result < ){
result = ;
}
if(result > ){
result =;
}
printf("%.7f\n", result);
}
return ;
}

心得:1.dp[i]=dp[i-2]*(1-p)+dp[i-1]*p,其实就是连续跟1-p/p相乘,自然想到矩阵加速。2.快速幂的思想,将O(n)降成O(lg(n))。

3.[0, 1; 1-p, p]  * [dp[i-2]; dp[i-1]] =  [dp[i-1]; dp[i]],然后变成幂运算之后就可以加速了。多次乘以相同的数值其实就是幂运算(一个数就是整数幂,多个数的式子就是矩阵幂)

2.POJ 2096 Collecting Bugs

经典的dp求期望的题,注意理解反向求期望的思想,以及C++整数除法跟数学上的除法的区别(他是下取整的)

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <fstream>
using namespace std; double dp[][];
int main()
{
int n, s;
double a, b, c, d;
//cout << sizeof(dp);
while(scanf("%d%d", &n, &s) != EOF){
memset(dp, , sizeof(dp));
for(int i = n; i >= ; --i){
for(int j = s; j >= ; --j){
if(i==n&&j==s)continue;
a = 1.0*(n-i)/n*j/s;
b = 1.0*i/n*(s-j)/s;
c = 1.0*i/n*j/s;
d = 1.0*(n-i)/n*(s-j)/s;
dp[i][j] = (a * dp[i+][j]+b*dp[i][j+]+d*dp[i+][j+] + 1.0)/(1.0-c);
}
}
printf("%.4f\n",dp[][]);
}
return ;
}

心得:1.C++整数除法跟数学上的除法的区别(他是下取整的)2.反向求期望的思想跟期望的性质E(aA+bB+....) = aE(A)+bE(B)+.....3.本题的递推公式需要变形计算一下:dp[i][[j] = a*dp[i+1][j]+b*dp[i][j]+c*dp[i][j+1]+d*dp[i+1][j+1]+14.动态规划矩阵的边界条件的控制。容易变坑,尤其是2维情况下

oj练习---dp专题的更多相关文章

  1. 决策单调性优化dp 专题练习

    决策单调性优化dp 专题练习 优化方法总结 一.斜率优化 对于形如 \(dp[i]=dp[j]+(i-j)*(i-j)\)类型的转移方程,维护一个上凸包或者下凸包,找到切点快速求解 技法: 1.单调队 ...

  2. 状压dp专题复习

    状压dp专题复习 (有些题过于水,我直接跳了) 技巧总结 : 1.矩阵状压上一行的选择情况 \(n * 2^n\) D [BZOJ2734][HNOI2012]集合选数 蒻得不行的我觉得这是一道比较难 ...

  3. 树形dp专题总结

    树形dp专题总结 大力dp的练习与晋升 原题均可以在网址上找到 技巧总结 1.换根大法 2.状态定义应只考虑考虑影响的关系 3.数据结构与dp的合理结合(T11) 4.抽直径解决求最长链的许多类问题( ...

  4. 区间dp专题练习

    区间dp专题练习 题意 1.Equal Sum Partitions ? 这嘛东西,\(n^2\)自己写去 \[\ \] \[\ \] 2.You Are the One 感觉自己智力被吊打 \(dp ...

  5. DP专题训练之HDU 2955 Robberies

    打算专题训练下DP,做一道帖一道吧~~现在的代码风格完全变了~~大概是懒了.所以.将就着看吧~哈哈 Description The aspiring Roy the Robber has seen a ...

  6. DP专题:划分数问题

    一.这个专题有什么用 练练DP 练练组合数学 ...... 二.正题 此类问题有如下几种形态: 1. 将n划分成若干正整数之和的划分数.2. 将n划分成k个正整数之和的划分数.3. 将n划分成最大数不 ...

  7. 【dp专题】NOIP真题-DP专题练习

    这里学习一下DP的正确姿势. 也为了ZJOI2019去水一下做一些准备 题解就随便写写啦. 后续还是会有专题练习和综合练习的. P1005 矩阵取数游戏 给出$n \times m$矩阵每次在每一行取 ...

  8. dp专题训练

    ****************************************************************************************** 动态规划 专题训练 ...

  9. 树形DP专题

    DP是我的弱项, 此专题意在总结树形DP的解题思路. 最小代价遍历一棵树 给定一棵带边权的树 $T=(V,E)$ , 遍历它 (树的每个节点都访问至少一次) 所需的最小代价. 这里的代价由具体问题所定 ...

随机推荐

  1. DBGridEh基本操作

    导出到excel等文件类型 uses DBGridEhImpExp//导出到文本文件 TDBGridEhExportAsText //导出到Unicode文本 TDBGridEhExportAsUni ...

  2. SQL——查询一段时间内每天的数据,按天将数据封装进行封存

    DROP TABLE IF EXISTS `T_ROTA_RECORD`; CREATE TABLE `T_ROTA_RECORD` ( `id` ) NOT NULL AUTO_INCREMENT, ...

  3. char *直接赋值和strcpy之间什么区别

    赋值是两个指针指向同一个位置. 而strcpy则是把内容拷贝了一份给另个一指针.

  4. ANSI码和UNICODE码

    什么是ANSI,什么又是UNICODE呢? 其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit. (对于字符来说ANSI以单字节存放英文字符,以双字节 ...

  5. node-rsa 非对称加密和解密

    使用公钥和私钥的加密和解密: 非对称加密的关键在于 有 公钥 / 私钥用法:a.生成一对公钥私钥b.公钥加密 -> 对应私钥解密c.私钥加密 -> 对应公钥解密 非对称加密的常见应用方式a ...

  6. 题外话:Lua脚本语言存在的意义

    纯属个人见解. 大致来说:c/c++执行效率高,游戏中一些性能敏感的复杂计算需要用c/c++来实现,防止游戏卡顿和低帧率.这些复杂计算包括战斗逻辑,复杂AI,骨骼动画蒙皮骨骼点的坐标计算等等.但c++ ...

  7. unity3d-游戏实战突出重围,第三天 绘制数字

    实现效果: 准备资源 using UnityEngine; using System.Collections; public class hznum : MonoBehaviour { //存储图片资 ...

  8. 《2017年Q2中国城市研究报告

    根据百度慧眼团队发布的<2017年Q2中国城市研究报告>,2017年第二季度人口吸引力排名前五的城市与第一季度相同,深圳继续保持第一的领先位置.

  9. Hibernate基础增删改查语法

    1.创建好Hibernate项目,创建好实体类和测试类,如果不会创建Hibernate项目的同学,点此处:http://www.cnblogs.com/zhaojinyan/p/9336174.htm ...

  10. TP文件上传

    一.单文件上传 <form action="__ACTION__" enctype="multipart/form-data" method=" ...