news 2026/4/12 13:59:25

每日一题: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/4/1 16:27:27

[NOI2009] 诗人小G题解

P1912 [NOI2009] 诗人小G 题目描述 小 G 是一个出色的诗人&#xff0c;经常作诗自娱自乐。但是&#xff0c;他一直被一件事情所困扰&#xff0c;那就是诗的排版问题。 一首诗包含了若干个句子&#xff0c;对于一些连续的短句&#xff0c;可以将它们用空格隔开并放在一行中&…

作者头像 李华
网站建设 2026/4/8 17:38:25

谁懂啊!别再说零基础学不了网安,电脑小白 4 阶段路线直接冲

别再说 “零基础学不了网安”&#xff01;电脑小白也能入门的 4 阶段路线. 总有人问&#xff1a;“我连代码都不会写&#xff0c;能学网络安全吗&#xff1f;” 其实真不用怕&#xff0c;哪怕你是只会用电脑刷视频的纯小白&#xff0c;跟着清晰的路线一步步学&#xff0c;照样…

作者头像 李华
网站建设 2026/4/11 12:16:53

技术陷阱揭秘:Vitest中then函数引发的模块加载异常

技术陷阱揭秘&#xff1a;Vitest中then函数引发的模块加载异常 【免费下载链接】vitest Next generation testing framework powered by Vite. 项目地址: https://gitcode.com/GitHub_Trending/vi/vitest 在JavaScript测试开发中&#xff0c;函数命名看似简单&#xff0…

作者头像 李华
网站建设 2026/4/10 22:17:14

RQ分布式任务日志集中化管理实战指南

RQ分布式任务日志集中化管理实战指南 【免费下载链接】rq 项目地址: https://gitcode.com/gh_mirrors/rq/rq 还在为RQ任务日志分散在各个Worker节点而头疼&#xff1f;&#x1f914; 是否因为无法统一监控任务执行状态而错失问题排查的最佳时机&#xff1f;别担心&…

作者头像 李华
网站建设 2026/4/7 14:48:22

java_base_(抽象类与接口区别篇)

我相信大家面对什么时候用抽象类&#xff0c;什么时候用接口会犯糊涂甚至手足无措。那么下面我将结合原神场景介绍一下它们各自的区别和特点&#xff0c;让你更了解何时用抽象类和接口。一、先明确核心&#xff1a;抽象类与接口到底是什么&#xff1f;在讲区别前&#xff0c;我…

作者头像 李华
网站建设 2026/4/10 21:26:35

开源游戏宝库终极指南:awesome-open-source-games

开源游戏宝库终极指南&#xff1a;awesome-open-source-games 【免费下载链接】awesome-open-source-games Collection of Games that have the source code available on GitHub 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-open-source-games awesome-open-…

作者头像 李华