动态规划基础复习 By cellur925

结束帝都的qbxt dp图论精讲班后,感觉自己依然很水,接下来的一周,不妨来复习一下讲课内容:)

动态规划是lyd讲的,上次在泉城讲数据结构,然鹅体验较差,这次虽说好了些,但还是比想象中的效果不好(还是我太菜了)。

本篇内容预警:理论知识偏多,warning。

 

引入:一个沙雕题(IOI1994-数字三角形

最简单的dp模型,初学者好题。

 

所以dp到底是啥?可以说,dp是多阶段决策过程的最优化方法。仅就最优化而言,搜索与dp经常干一码事。(dp也常求解方案数)。

在把实际问题划分为dp模型时,我们常用到以下术语。(已经混淆很久)

  阶段:每个子问题的求解过程。

  状态:(本人经常与阶段弄混)粗糙地说,可以认为是阶段的细化再划分。沙雕题中,就是数塔每层的每一列。

  转移:每个最优状态的选取过程

  决策:每个最优状态的选取。

而状态转移方程将这几要素有机地进行结合,可以说,思考出转移方程,dp题基本就可拿下。我们思考dp题的目的也就是找出转移方程。

 

在这里我们作短暂的停留,转移方程常与递推式长的很像。lyd觉得很多人递推和dp傻傻分不清。

我们先给出他的答案:

举个例子

错排问题:这个问题有许多具体的版本,如在写信时将n封信装到n个不同的信封里,有多少种全部装错信封的情况?又比如四人各写一张贺年卡互相赠送,有多少种赠送方法?自己写的贺年卡不能送给自己,所以也是典型的错排问题。

答案:F(n)=(n-1)*(F(n-1)+F(n-2))

怎么得出的呢?参考了一下wikipedia--

所以,lyd又说了--

 

 

再进行略微小结(怎么感觉开始大力抄课件..)

例题1 codevs核电站问题

是在序列上的问题,通常我们以下标为状态划分(虽说这是递推)

设f[i]为放到第i个坑位时的方案数。

我们可以分类讨论求解。(没错,oi中许多问题确实可以分类讨论)

显然每个坑位有两种选择:放或是不放。

  当i<m,有f[i]=f[i-1]*2

  当i==m,有f[i]=f[i-1]*2-1(这里不能再放了,否则会炸)

  当i>m,有f[i]=f[i-1]*2-f[i-1-m](减去不能放的方案数)

code

 1 #include<cstdio>
 2 #include<algorithm>
 3 
 4 using namespace std;
 5 typedef long long ll;
 6 
 7 int n,m;
 8 ll f[1000];
 9 
10 int main()
11 {
12     scanf("%d%d",&n,&m);
13     f[0]=1;
14     for(int i=1;i<=n;i++)
15     {
16         if(i<m) f[i]=f[i-1]*2;
17         else if(i==m) f[i]=f[i-1]*2-1;
18         else if(i>m) f[i]=f[i-1]*2-f[i-1-m];;
19     }
20     printf("%lld",f[n]);
21     return 0;
22 }
View Code

例题2 传纸条/方格取数 详见

https://www.cnblogs.com/nopartyfoucaodong/p/9475438.html  

例题3 编辑距离 详见

 

怎么判断一个题是不是dp?(抄lyd课件大全)

两个条件的进一步解读:

 

 

 

Dp与其他算法

一、贪心

 

 二、记忆化搜索

(好吧课件放完了)

聪明的你,是否对dp有了一些新的认识?

附:dalao推荐 TSOI__Vergil

关于dp的认识->绝世好文

转载于:https://www.cnblogs.com/nopartyfoucaodong/p/9475817.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值