[ARC107D] Number of Multisets题解

很显然的动态规划。

fi,jn=ik=j 时满足题意的集合数。

依题意可得:一个集合可以只由另一个集合添加元素或将所有元素除二得到。

初始:f0,0=1

目标:fn,k

所以可得:

- fi,j=fi1,j1+fi,j
- fi,j=fi,j×2+fi,j

代码:

复制代码
int main()
{
    int n,k;
    cin>>n>>k;
    f[0][0]=1;
    for(int i=1;i<=n;i++)
    {
        for(int j=i;j>=1;j--)
        {
            f[i][j]=f[i-1][j-1];
            if(j*2<=i)
            {
                f[i][j]+=f[i][j*2];
            }
            f[i][j]%=998244353;
        }
    }
    cout<<f[n][k];
    return 0;
}
复制代码

 

posted @   _Acheron  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示
人是可以改变一切的,世上的一切。