Q~ 抛一枚硬币 n 次,每次可能是正面或者反面向上,求没有连续超过 k 次硬币向上的方案数

A :

  dp[ i ] 表示到 i 位置的方案数,

  1 . 当 i < k 时, dp[i] = dp[i-1]*2

  2 . 当 i = k 时, dp[i] = dp[i-1]*2 - 1

  3. 当 i > k 时, dp[i] = dp[i-1]*2 - dp[i-k-1]

 

ll n, k;
ll dp[maxn]; void solve() {
dp[0] = 1;
ll res = 1;
for(ll i = 1; i <= n; i++){
if (i < k) dp[i] = dp[i-1]*2;
else if (i == k) dp[i] = dp[i-1]*2-1;
else dp[i] = dp[i-1]*2-dp[i-k-1];
dp[i] %= mod;
res *= 2; res %= mod;
}
ll ans = (res-dp[n]+mod)%mod;
printf("%lld\n", ans);
}

Q~ 有三种字母, 一个长度为 n 的序列的每一个位置只可能是这三种字母,但要求连续的三个位置不能同时出现这三种,求方案数

A :

  dp[i][0] 表示 i 位置与 i-1 位置相同的方案数, dp[i][1] 表示 i 位置与 i-1 位置不同的方案数

  dp[i][0] = dp[i-1][0] + dp[i-1][1]
       dp[i][1] = 2*dp[i-1][0] + dp[i-1][1]

void solve() {
dp[1][0]=3;
dp[1][1]=0;
for(int i=2;i <= n; i++){
dp[i][0]=dp[i-1][0]+dp[i-1][1];
dp[i][1]=2*dp[i-1][0]+dp[i-1][1];
}
}

  

各种小的 dp (精)的更多相关文章

  1. LOJ#6089 小 Y 的背包计数问题 - DP精题

    题面 题解 (本篇文章深度剖析,若想尽快做出题的看官可以参考知名博主某C202044zxy的这篇题解:https://blog.csdn.net/C202044zxy/article/details/ ...

  2. [NOI2009]诗人小G --- DP + 决策单调性

    [NOI2009]诗人小G 题目描述: 小G是一个出色的诗人,经常作诗自娱自乐. 但是,他一直被一件事情所困扰,那就是诗的排版问题. 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并 ...

  3. 牛客小白月赛30 J.小游戏 (DP)

    题意:给你一组数,每次可以选择拿走第\(i\)个数,得到\(a[i]\)的分数,然后对于分数值为\(a[i]-1\)和\(a[i]+1\)的值就会变得不可取,问能得到的最大分数是多少. 题解:\(a[ ...

  4. dp基础√

    1.重叠子问题 2.能从小问题推到大问题 Dp: 设计状态+状态转移 状态: 1.状态表示: 是对当前子问题的解的局面集合的一种(充分的)描述.(尽量简洁qwq) ◦          对于状态的表示 ...

  5. DP 优化方法大杂烩 & 做题记录 I.

    标 * 的是推荐阅读的部分 / 做的题目. 1. 动态 DP(DDP)算法简介 动态动态规划. 以 P4719 为例讲一讲 ddp: 1.1. 树剖解法 如果没有修改操作,那么可以设计出 DP 方案 ...

  6. Communication System(dp)

    Communication System Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25006 Accepted: 8925 ...

  7. [noip2005提高]过河 dp

    由于L的范围到了109,用普通dp做肯定是不成了: 可以观察到M的数量很小,dp在转移的过程中有大量的无用转移: 可以想到压缩范围,问题是如何压缩,观察若S=9,T=10时,能到达的点,9,10,18 ...

  8. LightOJ 1422 Halloween Costumes 区间dp

    题意:给你n天需要穿的衣服的样式,每次可以套着穿衣服,脱掉的衣服就不能再穿了,问至少要带多少条衣服才能参加所有宴会 思路:dp[i][j]代表i-j天最少要带的衣服 从后向前dp 区间从大到小 更新d ...

  9. hdu 4055 Number String(有点思维的DP)

    Number String Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

随机推荐

  1. C# const 和 readonly 有什么区别

    在写常量的时候,是选择使用 const 还是 static readonly 是一个让人难以决定的问题,本文告诉大家这两个方法的区别 如果一个类有静态字段,会如何初始化 可以使用的方法有两个,第一个方 ...

  2. jmeter登录配置

    前言: jmeter, Apache下的测试工具, 常用来进行压测, 项目中, 接口通常都需要进行登录才能被调用, 直接调用将提示"登录失效", 下面介绍如何在jmeter中配置参 ...

  3. linux 不用 ioctl 的设备控制

    有时控制设备最好是通过写控制序列到设备自身来实现. 例如, 这个技术用在控制台驱动 中, 这里所谓的 escape 序列被用来移动光标, 改变缺省的颜色, 或者进行其他的配置任 务. 这样实现设备控制 ...

  4. linux Do-it-yourself 探测

    探测也可以在驱动自身实现没有太大麻烦. 它是一个少有的驱动必须实现它自己的探测, 但是看它是如何工作的能够给出对这个过程的内部认识. 为此目的, short 模块进行 do- it-yourself ...

  5. Git用在公司项目上的操作

    修改代码后再次提交 搭档优化好他自己的代码后,我想在vscode上看看他优化后的结果 此时直接git pull origin就可以看到了 j接下来的一些指令,慢慢了解... 分支本身已经在我上面 以下 ...

  6. 2018-2-13-win10-uwp-绑定静态属性

    title author date CreateTime categories win10 uwp 绑定静态属性 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 1 ...

  7. windows键的妙用

    (1)当你需要暂时离开电脑一会儿,怕其余人动你的电脑时,你只需要按windows键+L就可以了,当然前提是你给自己的电脑设置过开机密码. (2)有时候你需要在盘里边找某个文件,但你的桌面上密密麻麻的, ...

  8. linux c函数参考手册

    一.字符测试 isalnum(测试字符是否为英文字母或数字) isalpha(测试字符是否为英文字母) isascii(测试字符是否为ascii码字符) isblank(测试字符是否为空格字符) is ...

  9. Visio高级应用部件

    标注与公式的应用: 插入标注 怎么让标注与图形建立关联:拖动标注的时候坐下角会出现黄色的点 把标准拖动到形状边的时候让黄点进入形状就是建立了关联 然后标注就会随着形状的移动而移动 而且复制和删除也都是 ...

  10. TCP/IP IGMP:Internet组管理协议

    1.概述 IGMP协议,让一个物理网络上的所有系统知道主机所在的多播组,ICMP作为IP层的一部分,通过IP数据报进行传输,有固定的报文长度.通过IP首部协议字段值为2指明 类型为1说明是多播路由器发 ...