D. Caesar's Legions
2024-08-26 22:07:31
\(状态很容易设计\)
\(设dp[i][j][u][v]表示放了i个1兵种和j个2兵种\)
\(然后u不会0说明末尾放了连续u个1兵种,v不为0说明末尾放了连续v个2兵种\)
#include <bits/stdc++.h>
using namespace std;
const int mod=1e8;
int dp[109][109][11][11],ans;
int main()
{
int n1,n2,k1,k2;
cin>>n1>>n2>>k1>>k2;
dp[0][0][0][0]=1;
dp[1][0][1][0]=1;
dp[0][1][0][1]=1;
for(int i=0;i<=n1;i++)
for(int j=0;j<=n2;j++)
{
for(int q=2;q<=min(i,k1);q++)
dp[i][j][q][0]=(dp[i][j][q][0]+dp[i-1][j][q-1][0])%mod;
for(int q=2;q<=min(j,k2);q++)
dp[i][j][0][q]=(dp[i][j][0][q]+dp[i][j-1][0][q-1])%mod;
for(int q=1;q<=min(j,k2);q++)
dp[i][j][1][0]=(dp[i][j][1][0]+dp[i-1][j][0][q])%mod;
for(int q=1;q<=min(i,k1);q++)
dp[i][j][0][1]=(dp[i][j][0][1]+dp[i][j-1][q][0])%mod;
}
for(int i=1;i<=k1;i++) ans+=dp[n1][n2][i][0];
for(int i=1;i<=k2;i++) ans+=dp[n1][n2][0][i];
cout<<ans%mod;
}
最新文章
- .net Socket 通信简单实例(初级入门)
- 继承映射关系 TPH、TPT、TPC<;EntityFramework6.0>;
- 一鼓作气 博客--第六篇 note6
- Linux WebServer WebRoot Path Identification
- 取消chrome浏览器下input和textarea的默认样式
- jquery easyui Combobox 实现 两级联动
- oracle 的一点累积
- 摇滚吧HTML5!有声前端交互!(Hello, Jsonic!)
- 进入MFC讲坛的前言(四)
- String,StringBuilder,StringBuffer
- PAT1010
- 修改了SpringBoot的主类名称后,gradle build报错的解决办法
- 《SQL CookBook 》笔记-准备工作
- 文本分类实战(七)—— Adversarial LSTM模型
- 写一个带文本菜单的程序,菜单项如下 (1) 取五个数的和 (2) 取五个数的平均值 (X) 退出。
- Git——入门操作加创建账号【三】
- python迭代器的说明
- java -->; Long和long/Integer和int
- Delphi 的内存操作函数(5): 复制内存
- 网络层 运输层 NAT路由器 NATP路由器 一根光纤 多个固定ip
热门文章
- 谁说.NET不适合搞大数据,机器学习、人工智能
- 009-数组-C语言笔记
- AJ学IOS 之微博项目实战(1)微博主框架-子控制器的添加
- QMS产品 - MasterControl 质量管理活动
- 记一个openwrt reboot异步信号处理死锁问题
- Daily Scrum 12/18/2015
- R - C Looooops POJ - 2115 (exgcd)
- 计算机系统基础学习笔记(1)-基本GCC,objdump,GBD命令的使用
- test_HTMLTestRunnerCN.py
- Go gRPC进阶-proto数据验证(九)