http://acm.hdu.edu.cn/showproblem.php?pid=5230

有初始值c,给你1~n的数,输入c+一些数,使得结果在l~r的范围内,输出方案数,注意每种方案中每个数只能使用一次。

可以直接令l和r减去c,便成了分解l~r内的数,求分解方案。

dp[i][j]表示i个数组成j的方案数,根据j最大值推出i最大值,有状态方程dp[i][j] = dp[i][j-i]+dp[i-1][j-i]推出每一个值,最后求出答案即可。

dp[i][j-i]表示相同数量,但每个数都减去一的方案,另外考虑到该方案可以含有1,也就是dp[i-1][j-i]。

另外注意每次要mod一下,于是有了以下代码。

#include<iostream>
#include<cstdio>
#include<cstring>
#define LL long long
#define MOD 998244353
using namespace std; LL n,c,l,r,dp[][]; int main()
{
int T;
scanf("%d",&T);
while(T--)
{
LL ans;
memset(dp,,sizeof(dp));
scanf("%d%d%d%d",&n,&c,&l,&r);
l -= c;
r -= c;
if(l) ans = ;
else ans = ;
dp[][] = ;
for(int i = ;i*(i+)/ <= r;i++)
{
for(int j = i*(i+)/;j <= r;j++)
{
dp[i][j] = (dp[i][j-i]+dp[i-][j-i])%MOD;
if(j >= l)
{
ans = (ans+dp[i][j])%MOD;
}
}
}
printf("%lld\n",ans);
}
return ;
}

然而内存竟然超了,于是改进,使用2个数组轮流交替,得出最终答案。

#include<iostream>
#include<cstdio>
#include<cstring>
#define LL long long
#define MOD 998244353
using namespace std; LL n,c,l,r,dp[][]; int main()
{
int T;
scanf("%d",&T);
while(T--)
{
LL ans;
memset(dp,,sizeof(dp));
scanf("%d%d%d%d",&n,&c,&l,&r);
l -= c;
r -= c;
if(l) ans = ;
else ans = ;
dp[][] = ;
for(int i = ;i*(i+)/ <= r;i++)
{
for(int j = i*(i+)/;j <= r;j++)
{
dp[i%][j] = (dp[i%][j-i]+dp[(i+)%][j-i])%MOD;
if(j >= l)
{
ans = (ans+dp[i%][j])%MOD;
}
}
memset(dp[(i+)%],,sizeof(dp[(i+)%]));
}
printf("%lld\n",ans);
}
return ;
}

HDU_5230_DP的更多相关文章

随机推荐

  1. 力扣208——实现 Trie (前缀树)

    这道题主要是构造前缀树节点的数据结构,帮助解答问题. 原题 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = ...

  2. Spring Security 实战干货: 简单的认识 OAuth2.0 协议

    1.前言 欢迎阅读 Spring Security 实战干货 系列文章 .OAuth2.0 是近几年比较流行的授权机制,对于普通用户来说可能每天你都在用它,我们经常使用的第三方登录大都基于 OAuth ...

  3. SqlBulkCopy批量插入和索引的关系

    .net中批量插入基本都用SqlBulkCopy,速度很快,但是这几天发现个问题,2000数据居然15s,百思不得其解.经过大量测试,发现过多的索引和索引碎片会严重影响插入速度,表的数据量大小反而不会 ...

  4. SpringBoot 2.x 开发案例之 Shiro 整合 Redis

    前言 前段时间做了一个图床的小项目,安全框架使用的是Shiro.为了使用户7x24小时访问,决定把项目由单机升级为集群部署架构.但是安全框架shiro只有单机存储的SessionDao,尽管Shrio ...

  5. .Net Core Web Api实践(四)填坑连接Redis时Timeout performing EVAL

    前言:前两篇文章.net core+Redis+IIS+nginx实现Session共享中,介绍了使用Microsoft.Extensions.Caching.Redis实现Session共享的方法, ...

  6. Spirng Boot2 系列教程(二十二)| 启动原理

    一个读者,也是我的好朋友投稿的一篇关于 SpringBoot 启动原理的文章,才大二就如此优秀,未来可期. 我一直想了解一下 SpirngBoot 的是如何启动的,我想就来写一篇关于 SpirngBo ...

  7. Java 多线程安全问题简单切入详细解析

    线程安全 假如Java程序中有多个线程在同时运行,而这些线程可能会同时运行一部分的代码.如果说该Java程序每次运行的结果和单线程的运行结果是一样的,并且其他的变量值也都是和预期的结果是一样的,那么就 ...

  8. Docker + node(koa) + nginx + mysql 线上环境部署

    在上一篇 Docker + node(koa) + nginx + mysql 开发环境搭建,我们进行了本地开发环境搭建 现在我们就来开始线上环境部署 如果本地环境搭建没有什么问题,那么线上部署的配置 ...

  9. ORM基础3 在python脚本里调用Django环境

    1.查询 1.# all获取所有的object,结果QuerySet,列表 print('all'.center(80, '=')) ret = models.Person.objects.all() ...

  10. [bzoj3925] [洛谷P3343] [ZJOI2015] 地震后的幻想乡

    Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...