news 2026/4/3 4:20:17

每日一题:Classroom (计数DP)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
每日一题:Classroom (计数DP)

题目链接:Problem - F - Codeforces

题意:

有 n 个学生,从1到n,要把他们分成连续的若干组(组数量不固定),满足 3 个要求:(1 ≤ n ≤ 5 ∗ 1e3)

1.第一组从第 1 个学生开始,最后一组到第 n 个学生结束,组内为连续整数,组间也需要连续;

2.第 1 组的总和能被 1 整除,第 2 组的总和能被 2 整除,……,第 k 组的总和能被 k 整除(k 是组的序号);例如:1 2 3 4 5可分为[1] [2 3 4 5] 或 [1 2] [3 4 5]等。

计算这样的分组方法有多少种,结果对 10⁹+7 取模。

核心思路:

定义dp[i][j]表示:将前j个学生分割成i个组,且满足所有条件的方法数。

初始化:dp[1][k] = 1(k≥1)

ans =∑(dp[i][n])(i 从 1 到 n)

对于j ≥ 2dp[j][k] = ∑(dp[j-1][t]),其中t满足:t < k(保证第 j 组是[t+1, k],连续)并且第 j 组的和sum(t+1, k)能被j整除。但直接写会超时。

转移方程中 t 同时也满足sum(1,t)与sum(1,k)关于j同余,可以用一个数组维护,复杂度O(n2)。

#include <bits/stdc++.h> using namespace std; #define int long long const int mod = 1e9 + 7; void solve() { int n; cin >> n; vector<int> dp(n + 1, 1); int ans = 1; for (int i = 2; i <= n; i++) { vector<int> f(i + 1), ndp(n + 1); int tem = 0; for (int j = 1; j <= n; j++) { tem = (tem + j) % i; ndp[j] = f[tem]; f[tem] = (f[tem] + dp[j]) % mod; } dp = ndp; (ans += dp[n]) %= mod; } cout << ans; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t = 1; // cin >> t; while (t--) solve(); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 20:02:07

网安人狂喜!红利期 5-8 年 + 480 万缺口,现在转行直接踩中风口

网络安全红利还能持续多久&#xff1f;现在转行还来得及吗&#xff1f; 前言 网络安全是一个不断发展的领域&#xff0c;各种新的技术、新的攻击手段层出不穷。同时&#xff0c;随着社会信息化进程的加速&#xff0c;网络安全的重要性也越来越被人们所重视。 我认为网络安全的…

作者头像 李华
网站建设 2026/4/1 1:42:14

ChromePass密码恢复工具:3步找回所有浏览器密码

ChromePass密码恢复工具&#xff1a;3步找回所有浏览器密码 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 你是否曾经在Chrome浏览器中保存了重要账号的密码&#xff0c;却在需…

作者头像 李华
网站建设 2026/3/30 18:08:46

Python基于Hadoop大数据的出行方式推荐系统_w5ya1557_zl011

文章目录系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统截图 Python基于Hadoop大数据的出行方式推荐系统_w5ya1557_zl011 项目简介 本次研…

作者头像 李华
网站建设 2026/3/31 8:28:02

EPubBuilder:零基础也能快速上手的电子书制作神器 ✨

EPubBuilder&#xff1a;零基础也能快速上手的电子书制作神器 ✨ 【免费下载链接】EPubBuilder 一款在线的epub格式书籍编辑器 项目地址: https://gitcode.com/gh_mirrors/ep/EPubBuilder 还在为复杂的电子书制作流程而头疼吗&#xff1f;&#x1f914; EPubBuilder 这款…

作者头像 李华
网站建设 2026/3/29 3:07:34

QuickLook完全教程:一键空格键实现文件免下载快速预览

QuickLook完全教程&#xff1a;一键空格键实现文件免下载快速预览 【免费下载链接】QuickLook 项目地址: https://gitcode.com/gh_mirrors/qui/QuickLook 还在为查看服务器上的文件而烦恼吗&#xff1f;每次都要下载整个压缩包才能看一个文档&#xff1f;QuickLook这款…

作者头像 李华
网站建设 2026/3/10 22:37:59

旋转位置编码RoPE

旋转位置编码&#xff08;RoPE&#xff09;详解旋转位置编码&#xff08;Rotary Position Embedding&#xff0c;简称 RoPE&#xff09;是一种在 Transformer 模型中编码位置信息的方法&#xff0c;核心思想是通过复数域的旋转操作让模型感知序列中 token 的位置关系&#xff0…

作者头像 李华