https://www.luogu.org/jump/atcoder/2370

题解

答案不是\(2^{2m}\)因为每轮的第一次取球可能会不够。

我们可以设\(dp[i][j]\)表示到了第\(i\)轮,当前白球有\(j\)个的方案数。

转移的话枚举下一次拿球的方案。

白白:\((i,j)->(i+1,j-1)\)

黑黑:\((i,j)->(i+1,j+1)\)

白黑:\((i,j)->(i+1,j)\)

黑白:\((i,j)->(i+1,j)\)

把每个状态放在二维平面上的话,我们其实是在统计本质不同的折线个数。

但是这样会算重。

所以我们需要让每条折线强制碰到底部。

那么我们在状态中记录一下是否碰到底部就行了。

代码

#include<bits/stdc++.h>
#define N 3002
using namespace std;
typedef long long ll;
const int mod=1e9+7;
ll dp[N][N][2];
int n,m;
inline void MOD(ll &x){x=x>=mod?x-mod:x;}
inline ll rd(){ll x=0;char c=getchar();bool f=0;while(!isdigit(c)){if(c=='-')f=1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}return f?-x:x;
}
int main(){n=rd();m=rd();for(int i=1;i<=n;++i)dp[0][i][0]=1;dp[0][0][1]=1;for(int i=1;i<=m;++i){for(int j=0;j<=n;++j)for(int k=0;k<2;++k)if(dp[i-1][j][k]){if(j){MOD(dp[i][j-1][k|(j==1)]+=dp[i-1][j][k]);MOD(dp[i][j][k|(j==1)]+=dp[i-1][j][k]);}if(j<n){MOD(dp[i][j+1][k]+=dp[i-1][j][k]);MOD(dp[i][j][k]+=dp[i-1][j][k]);}}}ll ans=0;for(int i=0;i<=n;++i)MOD(ans+=dp[m][i][1]);cout<<ans;return 0;
}

转载于:https://www.cnblogs.com/ZH-comld/p/11119522.html

AT2370 Piling Up相关推荐

  1. AtCoder Grand Contest 013D: Piling Up 题解

    题意简化: [luogu] Piling Up 一开始有n个颜色为黑白的球,但不知道黑白色分别有多少,m次操作,每次先拿出一个球,再放入黑白球各一个,再拿出一个球,最后拿出的球按顺序排列会形成一个颜色 ...

  2. AT2370-[AGC013D]Piling Up【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/AT2370 题目大意 有nnn个黑白球,但是具体颜色个数不确定,进行mmm次操作:拿出一个球然后放入黑白球各一个,再 ...

  3. Domino piling

    文章目录 一.Domino piling 总结 一.Domino piling 本题链接:Domino piling 题目: A. Domino piling time limit per test2 ...

  4. android Anr Input类型系统源码解析

    我们常说Input超时,都是指的是Input事件分发超时,因此整个超时计算以及触发都在InputDispatcher这个类中.其代码路径如下:/frameworks/native/services/i ...

  5. 什么是“缓存友好”代码?

    本文翻译自:What is a "cache-friendly" code? What is the difference between " cache unfrien ...

  6. Storage medium

    In previous chapters we've looked at manipulating data at the file level.In this chapter,we will con ...

  7. linux perf - 性能测试和优化工具

    Perf简介 Perf是Linux kernel自带的系统性能优化工具.虽然它的版本还只是0.0.2,Perf已经显现出它强大的实力,足以与目前Linux流行的OProfile相媲美了. Perf 的 ...

  8. 【译】Withdrawal symptoms

    Withdrawal symptoms 脱瘾症状 After the stimulus, the hangover 经济刺激计划之后所遗留下来的 Oct 7th 2010 <经济学人>20 ...

  9. Zuul 2 : The Netflix Journey to Asynchronous, Non-Blocking Systems--转

    原文地址:http://techblog.netflix.com/2016/09/zuul-2-netflix-journey-to-asynchronous.html We recently mad ...

最新文章

  1. MOSS SDK学习笔记系列文章
  2. mysql案例_MySQL实例crash的案例详细分析
  3. python3 next_对Python 3.2 迭代器的next函数实例讲解
  4. 剑指OFFER之字符串的排列(九度OJ1369)
  5. Linux并发与竞争实验(一次只允许一个应用程序操作LED灯)
  6. win10固态硬盘分区 整数_惠普HP笔记本Win10改Win7系统教程
  7. Python与MySQL连接
  8. wget python3_python wget
  9. 社区内放自助打印机,赚钱吗?
  10. 初探Object in java
  11. LMS Algorithm 最小均方算法
  12. 转:机器人工程师学习计划(YY硕)(后悔自己没有早点看到强力推荐)
  13. Python自动化办公:xlwt万字教程
  14. 解决waiting for all target devices to come online卡住不动、长时间不加载的情况
  15. 利用Tushare获取A股所有股票代码
  16. java算术运算符乘方_用java编写计算器 能够实现简单的加、减、乘、除、乘方、开方运算等;...
  17. 基于位置指纹匹配的定位算法
  18. php开源 会员资料,会员详情/会员信息/用户信息
  19. mysql 与sqlserver对比?哪个更好用?
  20. web漏洞扫描器原理_【技术分享】漏洞扫描技巧篇Web 漏洞扫描器

热门文章

  1. springboot 项目将本地引用打进jar包
  2. wifiphisher 钓鱼工具的使用
  3. 小白学python系列-(4)list
  4. 洛谷 P2415 集合求和【数学公式/模拟】
  5. OneAPM挂牌新三板,资本市场一片看好!
  6. PPP协议详细图解实验
  7. numpy找到数组中符合条件的数
  8. 编程珠玑第八章——习题10查找数组中总和最接近0的子数组
  9. 浅谈单片机程序设计中的“分层思想”
  10. 示波器触发模式及其使用