news 2026/7/28 7:49:23

每日一题: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/7/28 9:06:21

深入理解指针(7)

一、数组和指针笔试题解析&#xff08;2&#xff09;&#xff08;一&#xff09;二维数组int main() {int a[3][4] { 0 };printf("%d\n", sizeof(a));//48 a是数组名&#xff0c;单独放在sizeof内部&#xff0c;代表整个数组&#xff0c;3*4*4printf("%d\n&quo…

作者头像 李华
网站建设 2026/7/27 17:49:49

python大数据的基于k-means算法的校园美食推荐系统_j4eg7g7z--论文

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

作者头像 李华
网站建设 2026/7/27 13:05:42

MouseTester专业指南:3步完成鼠标性能精准诊断

MouseTester专业指南&#xff1a;3步完成鼠标性能精准诊断 【免费下载链接】MouseTester 项目地址: https://gitcode.com/gh_mirrors/mo/MouseTester 还在为游戏中的瞄准不准而烦恼&#xff1f;或是设计时鼠标漂移影响创作精度&#xff1f;MouseTester让你告别主观猜测…

作者头像 李华
网站建设 2026/7/26 12:28:35

[鸿蒙2025领航者闯关]图标资源统一管理

解决方案 系统图标使用 Component struct SystemIcons { build() { Row({ space: 16 }) { // ✅ 使用系统图标 Image(r(′sys.media.ohosicpublicadd′)).width(24).height(24).fillColor(Color.Black);Image(r(sys.media.ohos_ic_public_add)) .width(24…

作者头像 李华
网站建设 2026/7/20 14:30:25

区分__proto__和prototype

彻底区分__proto__与prototype&#xff1a;从JS底层到Vue实战 要彻底理解 __proto__ 和 prototype&#xff0c;需穿透 JavaScript 原型链的底层逻辑&#xff0c;再结合 Vue 框架的实例体系落地应用。本文从「归属、作用、关联、误区、实战」五个核心维度拆解&#xff0c;补充大…

作者头像 李华