D - Number of Multisets 题解(思维dp)
2024-10-20 03:52:55
题目链接
题目大意
给你一个数k和n,表示用n个\(1/2^i(i=0,1,2.....)\)组成k有多少种方案数
题目思路
这个dp实属巧妙
设\(dp[i][j]表示i个数构成j\)
这i个数可以分为两种第一种为有1,第二种为无1
有一则可以直接从\(dp[i-1][j-1]\)转移
无一则可以从\(dp[i][2*j]\)让这i个数全部除以二即可
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int maxn=3e3+5,mod=998244353;
int n,k;
ll dp[maxn][maxn];
int main(){
scanf("%d%d",&n,&k);
dp[0][0]=1;
// dp[i][j] 表示i个数凑成k
for(int i=1;i<=n;i++){
for(int j=i;j>=1;j--){
dp[i][j]=(dp[i-1][j-1]+(2*j<=i?dp[i][2*j]:0))%mod;
// i个数内有1和无1
}
}
printf("%lld\n",dp[n][k]);
return 0;
}
最新文章
- Python学习之路
- sql 日期格式输出 - 转
- Java实现敏感词过滤
- Android 操作SQLite基本用法
- 微信公众平台开发(112) 自动更新微信access token
- <;<;海闻电子发票接口 ESB 封装 代码指示 文档>;>;
- Tuple元组
- delphi OnMouseLeave 事件不灵敏及解决之道(使用TrackMouseEvent函数进行加强)
- Android Studio中新建项目时Your android sdk is out of date or is missing templates的解决办法
- 软硬结合的可穿戴式app
- .net TxetBox控件设置ReadOnly=True后台取值问题
- java变量和数据类型总结
- EntityFramework Core 2.0执行原始查询如何防止SQL注入?
- PL2303HX在Windows 10下面不装安装驱动的解决办法(Code:10)
- pdo的简单介绍和使用
- SCTP接口模型
- js 自己项目中几种打开或弹出页面的方法
- Linux内核分析——第四周学习笔记
- 安装/使用 MVVMLight(转)
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.4 LHS简介&;Pattern