hdu 5230(整数划分,dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5230
解题思路:
这是一个整数划分的模型:
将n划分为k个整数的划分数
设dp[i][j]为将i划分为j个整数的划分数。
(1) i<j为不可能出现的情况,dp[i][j]=0;
(2) 若i=j,有一种情况:i可以划分为i个1之和,dp[i][j]=1;
(3) 若i>j,可以根据划分数中是否含有1分为两类:若划分数中含有1,可以使用“截边法”将j个划分分别截去一个1,把问题转化为i-j的j-1个划分数,为dp[i-j][j-1]; 若划分中不包含1,使用“截边法”将j个划分数的最下面一个数截去,将为题转化为求i-j的j个划分数,为dp[i-j][j]。所以i>j时dp[i][j]=dp[i-j][j-1]+dp[i-j][j]。
这道题是一样的,dp[i][j]表示将i划分成j个不同的数,与上面不同的是,这里当i=j时我们是不处理的,即我们不能出现i=j的情况。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int maxn = 100005;
const int mod = 998244353;
int n,L,R,C,dp[2][maxn];int main()
{int t;scanf("%d",&t);while(t--){scanf("%d%d%d%d",&n,&C,&L,&R);L -= C,R = min(R-C,n-1);memset(dp,0,sizeof(dp));dp[0][0] = 1;int ans = L <= 0 ? 1 : 0;for(int i = 1; (1 + i) * i / 2 <= R; i++) //枚举人数{for(int j = (1 + i) * i / 2; j <= R; j++) //枚举分数{dp[i & 1][j] = (dp[i & 1][j - i] + dp[(i - 1) & 1][j - i]) % mod; if(L <= j && j <= R)ans = (ans + dp[i & 1][j]) % mod;}memset(dp[(i - 1) & 1],0,sizeof(dp[(i - 1) & 1])); }printf("%d\n",ans);}return 0;
}
hdu 5230(整数划分,dp)相关推荐
- 大概是:整数划分||DP||母函数||递推
整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...
- 51nod 1201:整数划分 超级好的DP题目
1201 整数划分 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} { ...
- Acwing900. 整数划分[计数类dp]:完全背包解法
文章目录 题目分析 完全背包解法 题目链接 题目分析 完全背包解法 请复习完全背包模板完全背包dp优化内有完整标准完全背包的推导过程 状态表示: f[i][j]f[i] [j]f[i][j] 表示从 ...
- NYOJ90 整数划分(经典递归和dp)
整数划分 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 将正整数n表示成一系列正整数之和:n=n1+n2+-+nk, 其中n1≥n2≥-≥nk≥1,k≥1. 正整数 ...
- Gym - 100952H--H. Special Palindrome--dp整数划分(模板)
题目地址 A sequence of positive and non-zero integers called palindromic if it can be read the same forw ...
- HDOJ1028-Ignatius and the Princess III(整数划分)
整数划分: 整数N划分问题是一个组合数学的问题,要求将N划分成多个数的和,实际是将N个1切分成几块的问题,也可以说是在N个1的N-1个空档中插入K块挡板分割. 动态规划: dp[i][j],将i划分为 ...
- NYOJ-571 整数划分(三)
此题是个非常经典的题目,这个题目包含了整数划分(一)和整数划分(二)的所有情形,而且还增加了其它的情形,主要是用递归或者说是递推式来解,只要找到了递推式剩下的任务就是找边界条件了,我觉得边界也是非常重 ...
- codevs1085数字游戏(环形DP+划分DP )
1085 数字游戏 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在 ...
- ACM 整数划分(四)
整数划分(四) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到 ...
最新文章
- Python高级编程(二)
- jvm:虚方法与非虚方法
- [@Controller]4 详解@ModelAttribute
- Smartform中负号提前解决方法
- 工作55:对v-model的理解
- 零基础入门│带你理解Kubernetes
- JAVA多线程售票问题
- 直接插入排序中的监视哨问题
- Adobe Acrobat Pro 2017安装
- 北洋园pt---一个好用的pt网站
- Overture五线谱乐理小课堂——音程 (上)
- 辽宁教师计算机能力提升,辽宁省中学教师信息化教学能力的现状分析与提升策略研究...
- 动态图解实例 ConstraintLayout Chain
- 秒懂Android属性动画
- 工具收集 - 搜索工具
- java语言程序设计教程课后题答案魏永红_《Java语言程序设计教程》习题参考答案...
- 深度学习 情感分析_使用深度学习进行情感分析
- 7时过2小时是几时_餐后2小时血糖正常值是多少?
- Scratch的克隆体
- 全爱科技发布边缘计算主板QA200PCIE
热门文章
- 赛程一览 | 2019 上海国际创客大赛
- SPringBoot+mybatis 框架搭建例子
- TPYBoard:一款可以发挥无限创意的MicroPython开发板
- 从比特大陆AI芯片入局智慧城市看阿里腾讯的城市“攻坚战”...
- 大型分布式C++框架《四:netio之请求包中转站 上》
- 不是你无法入门自然语言处理(NLP),而是你没找到正确的打开方式
- css中的一些常用选择器
- [C#] C# 知识回顾 - 装箱与拆箱
- tomcat 域名的配置
- Hadoop---在window下配置安装之cygwin的安装