UVa 10328 - Coin Toss

题意:给你一个硬币,抛掷n次,问出现连续至少k个正面向上的情况有多少种。

转换成抛N次至多连续有N个减去抛N次至多连续有K-1个1的情况 dp[i][k]表示抛i次至多连续有k个1的情况数;

转移方程:i<=k的时候有dp[i][k]=dp[i-1][k]*2  因为因为dp[i][k]表示抛i次至多连续有k个 i<=k的时候不会出现非法的情况

i>k的时候   如果i-j到i-1都是1 那么i=1就不可行 所以dp[i][k]=dp[i-1][k]-i-j到i-1都是1的情况数

i-j到i-1都是1的情况数:试想第i-j-1个位置应该是什么呢.很明显应该是F.如果是H那就会出现非法状态了.那在第i-j-1之前的位置呢.无论H和F都可以,只要不出现连续的H个数大于j的非法状态即可,就是dp[i-j-2][j]。

即将i-1到i-j-1的数都看作是"确定的一个数"所以情况数是dp[i-j-2][k];

然后将i==k+1的时候特判

ZOJ 3747 - Attack on Titans

题意:有三个兵种R,G,P,选取N个排成一列,要求G至少有M个连续的,R至多有K个连续的,问有多少种排列方式。

dp[i][4]的1,2,3表示第i个放R,G,P时最多有x个连续的G和y个连续的R的情况

这样就转换成了求 sum(dp[n][i])x=M y=N的情况减去sum(dp[n][i])x=M y=K的情况

dp[i][3]因为对RG没有影响所以递推公式始终为

dp[i][3]=sum(dp[i-1][1],dp[i-1][2],dp[i-1][3]);

i<=y时

dp[i][1]=dp[i][3];//R

i==y+1时

dp[i][1]=dp[i][3]-1;

i>y+1时

dp[i][1]=dp[i][3]-dp[i-y-1][2]-dp[i-y-1][3];

i<=x时

dp[i][2]=dp[i][3];//G

i==x+1时

dp[i][2]=dp[i-1][1]+dp[i-1][3]+dp[i-1][2]-1(1~x全为G的情况)

i>x+1时

dp[i][2]=dp[i][3]-dp[i-x-1][1]-dp[i-x-1][3];

递推DP(至少和至多之间的转换的更多相关文章

  1. Coin Toss(uva 10328,动态规划递推,限制条件,至少转至多,高精度)

    有n张牌,求出至少有k张牌连续是正面的排列的种数.(1=<k<=n<=100) Toss is an important part of any event. When everyt ...

  2. attack on titans(动态规划递推,限制条件,至少转至多方法,进击的巨人)

    题目意思: 给n个士兵排队,每个士兵三种G.R.P可选,求至少有m个连续G士兵,最多有k个连续R士兵的排列的种数. 原题 Attack on Titans Time Limit: 2 Seconds ...

  3. 递推DP URAL 1017 Staircases

    题目传送门 /* 题意:给n块砖头,问能组成多少个楼梯,楼梯至少两层,且每层至少一块砖头,层与层之间数目不能相等! 递推DP:dp[i][j] 表示总共i块砖头,最后一列的砖头数是j块的方案数 状态转 ...

  4. 递推DP URAL 1167 Bicolored Horses

    题目传送门 题意:k个马棚,n条马,黑马1, 白马0,每个马棚unhappy指数:黑马数*白马数,问最小的unhappy值是多少分析:dp[i][j] 表示第i个马棚放j只马的最小unhappy值,状 ...

  5. 递推DP URAL 1260 Nudnik Photographer

    题目传送门 /* 递推DP: dp[i] 表示放i的方案数,最后累加前n-2的数字的方案数 */ #include <cstdio> #include <algorithm> ...

  6. 递推DP URAL 1353 Milliard Vasya's Function

    题目传送门 /* 题意:1~1e9的数字里,各个位数数字相加和为s的个数 递推DP:dp[i][j] 表示i位数字,当前数字和为j的个数 状态转移方程:dp[i][j] += dp[i-1][j-k] ...

  7. 递推DP URAL 1119 Metro

    题目传送门 /* 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 递推DP:仿照JayYe,处理的很巧妙,学习:) 好 ...

  8. 递推DP 赛码 1005 Game

    题目传送门 /* 递推DP:官方题解 令Fi,j代表剩下i个人时,若BrotherK的位置是1,那么位置为j的人是否可能获胜 转移的时候可以枚举当前轮指定的数是什么,那么就可以计算出当前位置j的人在剩 ...

  9. 递推DP HDOJ 5328 Problem Killer

    题目传送门 /* 递推DP: 如果a, b, c是等差数列,且b, c, d是等差数列,那么a, b, c, d是等差数列,等比数列同理 判断ai-2, ai-1, ai是否是等差(比)数列,能在O( ...

随机推荐

  1. xaml中显示 “大括号左边” 文本

    Content="{}{" 最合适的还是上面的写法 转义符{不好使的 要么 空格{ 要么 全角{ 要么binding

  2. app测试基础知识之命令

    app测试点:功能测试,安全测试,用户体验测试,交叉事件测试,兼容性测试,性能测试,安装/升级/卸载 ,UI测试 命令操作: adb connect 名 adb devices adb  instal ...

  3. fiddler的使用:抓包定位、模拟弱网

    一.fiddler抓包定位 Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(cookie,htm ...

  4. POJ3734 Block母函数入门

    一段长度为n的序列,你有红黄蓝绿四种颜色的砖块,一块砖长度为1,问你铺砖的方案数,其中红黄颜色之和必须为偶数. #include <queue> #include <stack> ...

  5. 测试工具/PostMan

    1.postman测试上传文件

  6. Jenkins 远程部署

    参考:https://www.cnblogs.com/bookwed/p/4583033.html 准备环境: 本地开发,安装虚拟机,在虚拟机安装Linux服务器 步骤: 1.安装插件,登录到Jenk ...

  7. MSF魔鬼训练营-3.2.2 操作系统辨识

    利用操作系统视频进行社会工程学攻击.例如在探测到目标用户所使用的网络设备.服务器设备厂家型号等信息后.可伪装成相关厂家的技术人员通过电话.邮件等方式与系统管理员取得联系得到信任.NMAP 示例: 使用 ...

  8. 如何重装mysql8及初次修改密码

    首先在设置里卸载旧版的mysql 然后把你之前的安装的mysql文件夹整个删掉 然后删除注册表的MySQL信息 安装新版的MySQL 新建并配置my-default.ini文件 如下: [mysqld ...

  9. P2670 【扫雷游戏】

    题面哦~~ lalala~~~ 这题数据并不大,最大不过100*100,所以果断穷举 其实本来我是想边读边做的,但读入是个问题. 主要思路呢,就是读完之后穷举一边,只要是炸弹,就把周围一圈8个加一遍 ...

  10. 基于apache-commons-email1.4 邮件发送

    MailUtil.java package com.lucky.base.common.util; import com.zuche.framework.utils.PropertiesReader; ...