zoukankan      html  css  js  c++  java
  • hdu 4504 dp问题 转化能力不够 对状态的转移也是不够

    威威猫系列故事——篮球梦

    Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
    Total Submission(s): 3977    Accepted Submission(s): 1042


    Problem Description
      威威猫十分迷恋篮球比赛,是忠实的NBA球迷,他常常幻想自己那肥硕的身躯也能飞起扣篮。另外,他对篮球教练工作也情有独钟,特别是对比赛的战术,投篮选择方面也是很有研究,下面就是威威猫研究过的一个问题:
      一场NBA篮球比赛总共48分钟,假如我们现在已经知道当前比分 A:B,A代表我方的比分,B代表对方的比分,现在比赛还剩下t秒时间。我们简单的认为双方各自进攻一次的时间皆固定为15秒(不到15秒则进攻不得分),且为交替进攻,即我方进攻一次,接着对方进攻,依次循环。
      进攻有三种选择方式:(这里不考虑命中率)
      1、造犯规,(假设都两罚一中)得1分;
      2、中距离投篮 得2分;
      3、三分球 得3分。
      为了简化问题,假设在对方回合,由于我方防守比较好,只让对手得1分,且为固定,即对方的进攻回合就为每回合得1分。现在比赛进入最后关头,接下来第一个回合是我方进攻,现在威威猫想要知道教练有多少种不同的选择能使我方可能赢得比赛(可能的意思就是不考虑命中率的情况)。
     
    Input
    输入有多组数据(不超过250组);
    每组数据包含3个整数A,B和t,其中A和B 表示当前的比分(0 <= A, B <= 200),t表示还剩多少时间(单位秒 0 <= t <= 600)。
     
    Output
    请输出可行的方案数,每组数据输出占一行。
     
    Sample Input
    88 90 50
     
    Sample Output
    6

    这道题目,, 还真没想到用dp来求解。。 果然自己还是太菜

    先回忆一下dp类题目的求解方法

    (1)划分阶段:按照问题的时间或空间特征,把问题分为若干个阶段。在划分阶段时,注意划分后的阶段一定要是有序的或者是可排序的,否则问题就无法求解。

    (2)确定状态和状态变量:将问题发展到各个阶段时所处于的各种客观情况用不同的状态表示出来。当然,状态的选择要满足无后效性。

    (3)确定决策并写出状态转移方程:因为决策和状态转移有着天然的联系,状态转移就是根据上一阶段的状态和决策来导出本阶段的状态。所以如果确定了决策,状态转移方程也就可写出。但事实上常常是反过来做,根据相邻两个阶段的状态之间的关系来确定决策方法和状态转移方程。

    (4)寻找边界条件:给出的状态转移方程是一个递推式,需要一个递推的终止条件或边界条件。

    首先是划分阶段 这里的阶段是每个我方攻击回合

    然后是状态 状态就是在该回合下 该分数下最大的策划数  最大策划数与1 2 3分 这三个手段有关 而且分数是状态转移的一个关键(状态的变化 链接 就需要内层循环提供)

    在一个回合中 要有最大的策划数 就是三个手段就尽可能的用上 这个就是我们的决策

    最后写出状态转移方程  

    if(j>1)
    dp[i][j]+=dp[i-1][j-1];
    if(j>2)
    dp[i][j]+=dp[i-1][j-2];
    if(j>3)
    dp[i][j]+=dp[i-1][j-3];//在满足条件的情况下 尽可能多的的使用着三个手段  这里的dp[i][j] i表示我方第i个回个 j表示当前得分 这个dp表示的是在第i回合J得分下 能够采取的最大策划次数

    慢慢的 去入门dp类型的问题吧 只有大量的题目才可以让自己有更深的体会 还是练的太少了

    这道题目让我对状态的记录 联系 还有怎么制定决策有了更深的理解

  • 相关阅读:
    Ubuntu12.04.1安装JDK 分类: ubuntu 20130506 11:45 1491人阅读 评论(0) 收藏
    Ubuntu 设置静态IP上网 分类: ubuntu 20130511 11:18 693人阅读 评论(0) 收藏
    linux 找回root用户密码 分类: ubuntu 20130426 15:57 199人阅读 评论(0) 收藏
    #小练习 类属性 分类: python 小练习 20130428 14:46 190人阅读 评论(0) 收藏
    VirtualBox虚拟机网络设置(四种方式) 分类: 测试 虚拟机 20130511 15:40 275人阅读 评论(0) 收藏
    异常处理 分类: python 20130502 11:13 172人阅读 评论(0) 收藏
    bash: ./java: cannot execute binary file 问题 分类: ubuntu 20130506 18:05 788人阅读 评论(0) 收藏
    在ubuntu上关闭tomcat的自启动 分类: ubuntu 20130507 09:45 302人阅读 评论(0) 收藏
    linux设置python环境变量 分类: python 20130513 10:37 1253人阅读 评论(0) 收藏
    #小练习 冒泡排序 分类: python 小练习 20130503 14:36 200人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/z1141000271/p/5733479.html
Copyright © 2011-2022 走看看