当前位置: 首页 > news >正文

[ARC107D] Number of Multisets 分析

题目概述

你需要确定 \(n\) 个数,每个数形如 \(\frac{1}{2^x}(x\geq 0)\),其中 \(x\) 是非负整数,求他们的和为 \(k\) 的方案。

数据范围:\(1\leq k\leq n\leq 3000\)

分析

真的妙!

我们假设最后的结果为 \(\{\frac{1}{8},\frac{1}{2},\frac 1 2,1\}\)

我们可以看作一开始的序列为 \(\{1,1,1,1\}\),然后先对前 \(1\) 乘上两个 \(\frac{1}{2}\),再对前 \(3\) 个乘上 \(\frac{1}{2}\)

那么我们可以依据此设 \(f_{i,j}\) 表示前 \(i\) 个和为 \(j\) 的方案。

假设我当前只是放 \(1\),那么就是 \(f_{i,j}\leftarrow f_{i-1,j-1}\)

如果我要乘个若干个 \(\frac{1}{2}\),那么就是 \(f_{i,j}\leftarrow f_{i,2j}\)

为什么不是 \(f_{i-1,2j}\) 呢?因为我们这里可以乘很多个,这是一个完全背包。

代码

时间复杂度 \(\mathcal{O}(n^2)\)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#define int long long
#define N 3005
using namespace std;
const int mod = 998244353;
int n,k;
int f[N][N];
signed main(){cin >> n >> k;f[0][0] = 1;for (int i = 1;i <= n;i ++)for (int j = i;j >= 0;j --) {f[i][j] = f[i - 1][j - 1];if (j * 2 <= i) f[i][j] = (f[i][j] + f[i][j * 2]) % mod;}cout << f[n][k];return 0;
}
http://www.zskr.cn/news/45786.html

相关文章:

  • 2025年3000卫生纸加工设备推荐排行
  • 项目管理系统开发指导
  • 2025年做工精细的小白瓶前置过滤器哪家靠谱
  • 2025年11月滑梯厂家推荐榜: 解锁安全户外滑梯/不锈钢滑梯/组合滑梯/非标滑梯/儿童滑梯趣味游乐新体验
  • 2025年资深的大型展厅设计渠道哪家强
  • 2025年超融合渠道口碑推荐榜
  • day24-langgraph基础
  • 2025年毛发检测企业推荐排行榜单
  • 2025年资深的青少年心智成长训练企业哪家强
  • Cuda C++:Tensor Core 数值行为分析之测试复现
  • 推荐几家城际出行网约车公司
  • WORK 4
  • 2025年知识付费软件平台不踩坑:五星推荐创客匠人,知识店铺搭建/知识内容变现系统/在线教育SaaS平台/线上卖课平台/AI赋能和陪跑服务双保障
  • 校园二手物品交易平台
  • pytorch、torchaudio、torchvideo版本对应关系
  • 微信小程序开发过程中,体验版调试模式是一个非常实用的功能,尤其适用于测试人员、产品或团队成员在正式发布前进行作用验证。以下是对微信小应用“体验版调试模式”的详细设置说明,包括操作步骤等
  • 【四级】全国大学英语四级历年真题及答案解析PDF电子版(2015-2025年6月) - 详解
  • 提示词语料收集
  • 2025-11-10 早报新闻
  • 20232428 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 详细介绍:P3375 【模板】KMP
  • 基于DP1323EL的电动车解锁方案:超高速读写,提升电动车一键解锁体验
  • 最强LLM生成代码也会出错?
  • 张量与向量
  • 实用指南:LLMs-from-scratch :KV 缓存
  • ubuntu16.04安装CUDA驱动 - 小
  • 2025年11月太阳能板生产厂家排名前十榜单:深圳精益太阳能板引领行业
  • QOJ6608 Descent of Dragons
  • vue实现T型二维表格
  • 2025年深圳救护车运转公司权威推荐榜单:正规救护车出租/急救车出租/出租救护车源头公司精选