动态规划强化课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分析:求最优值,并且由上往下落的固定顺序,可考虑采用动态规划 初始化,按平台的高度排序 动规分析: 由下往上讨论,a[i],b[i],h[i]分别记录第i个平台的左右端点和高度 状态Left[i] 记录从第i个平台的左侧下落到地面所需最短时间 状态Right[i] 记录从第i个平台的左侧下落到地面所需最短时间 Left[i] a[i] Right[i] b[i] Left[x] a[x] Right[x] b[x] 当讨论小球从某个平台的左侧或右侧下落时,只需讨论小球砸中的第一个平台 从i到x后往左Left[i]= a[i]-a[x]+h[i]-h[x]+Left[x] (h[i]-h[x]=MAX) 从i到x后往右Left[i]= b[x]-a[i]+h[i]-h[x]+Right[x] (h[i]-h[x]=MAX) Left[y] a[y] Right[y] b[y] 从i到y后往左Right[i]= b[i]-a[y]+h[i]-h[y]+Left[y] (h[i]-h[y]=MAX) 从i到y后往右Right[i]= b[y]-b[i]+h[i]-h[y]+Right[y] (h[i]-h[y]=MAX) 从i的左侧下落: 从i的右侧下落: 直接落地 图论? 求最短路? Stamps 邮票(USACO 3.1.6) 现有 N 种面值的邮票(如,{1 分,3 分})和一个上限 K。表示信封上最多能贴 K 张邮票。计算从 1 开始最大连续可贴出的邮资。 例如,假设有 1 分和 3 分的邮票;你最多可以贴 5 张邮票。很容易贴出 1 到 5 分的邮资(用 1 分邮票贴就行了),接下来的邮资也不难: 6 = 3 + 3 7 = 3 + 3 + 1 8 = 3 + 3 + 1 + 1 9 = 3 + 3 + 3 10 = 3 + 3 + 3 + 1 11 = 3 + 3 + 3 + 1 + 1 12 = 3 + 3 + 3 + 3 13 = 3 + 3 + 3 + 3 + 1 然而,使用 5 枚 1 分或者 3 分的邮票根本不可能贴出 14 分的邮资。因此,对于这两种邮票和上限 K=5,从1开始最大可连续贴出的邮资是13。 小提示:因为14贴不出来,所以最高上限是13而不是15 样例输入: 5 2 (表示K和N) 1 3 (表示每种邮票的面值) 样例输出: 13 数据范围:N=50 K=200 每张邮票面值不超过10000 分析: 1.数据分析:每个信封最多贴K(K=200)张邮票,每张邮票面值不超过10000 能贴出的最大邮资不超过2000000,可用一个数组来表示能够贴出的每种邮资 2.算法分析: 搜索 每种邮票最多可贴200张,总共50种邮票,朴素的深搜规模将达到50200 动态规划: 阶段: 能够构成的每个面值为阶段。比如能够构成的面值为1到V,那么总共V个阶段。 状态:f[i]表示构成面值i所需最少邮票数 决策: 对于样例数据1和3两种面值的邮票 构成邮资0 所需邮票为0张, f[0]=0 构成邮资1 只能使用1分的邮票,所需邮票为1张, f[1]=1 构成邮资2 只能使用1分的邮票,所需邮票为2张, f[2]=2 构成邮资3 若选择使用一张1分的邮票, f[3]=f[2]+1=3 f[3-1]+1 若选择使用一张3分的邮票, f[3]=f[0]+1=1 f[3-3]+1 构成邮资4 若选择使用一张1分的邮票 , f[4]=f[3]+1=4 f[4-1]+1 若选择使用一张3分的邮票, f[4]=f[1]+1=2 f[4-3]+1 方程:f[i]=min{f[i-a[ j]]+1} i=a[ j] 1=j=n f[i]=k int i,j,k,n,f[2000001],a[51]; int main() { scanf(%d%d,k,n); for(i=1;i=n;i++)scanf(%d,a[i]); f[0]=0; i=0; //初始化状态 while(f[i]=k) { i++; f[i]=9999999; //i表示阶段

文档评论(0)

创业文库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档