news 2026/3/26 3:36:28

每日一题: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/25 12:16:05

程序员变现天花板!漏洞挖掘私活接单经验,靠技术躺赚的新思路

经常有小伙伴问我&#xff1a; 为什么自己总是挖不到漏洞呢? 渗透到底是什么样的流程呢? 所以全网最详细的渗透测试流程来了!!! 全篇文章内容较长,请耐心观看! 如果想要视频教程自己慢慢学&#xff0c;可以直接拉到文末 渗透测试 渗透测试其实就是通过一些手段来找到网…

作者头像 李华
网站建设 2026/3/15 22:22:35

Chrome密码找回实战:ChromePass工具完整使用指南

Chrome密码找回实战&#xff1a;ChromePass工具完整使用指南 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 你是否遇到过这样的困扰&#xff1a;在Chrome浏览器中保存了重要账…

作者头像 李华
网站建设 2026/3/23 23:42:16

CSS Module 中如何优雅使用全局样式?前端开发者避坑指南

CSS Module 中如何优雅使用全局样式&#xff1f;前端开发者避坑指南CSS Module 中如何优雅使用全局样式&#xff1f;前端开发者避坑指南引言&#xff1a;为什么我们总在局部与全局之间纠结CSS Modules 的核心思想与作用机制全局样式的合理存在场景有哪些global 关键字的正确打开…

作者头像 李华
网站建设 2026/3/25 14:15:31

diffuser中的注意力处理器(attention_processor)

在 Diffusers 库中&#xff0c;attention_processor&#xff08;注意力处理器&#xff09;是用于实现不同类型注意力机制计算的核心组件&#xff0c;它封装了注意力操作的具体逻辑&#xff0c;使得不同模型或任务可以灵活替换或定制注意力计算方式。 核心作用 注意力处理器负…

作者头像 李华
网站建设 2026/3/24 1:59:25

Flutter Engine长文本渲染优化:从卡顿到流畅的实战指南

你是否曾遇到过Flutter应用在渲染长篇对话记录或电子书时出现明显卡顿&#xff1f;当文本内容超过10万字&#xff0c;应用首屏加载缓慢&#xff0c;滑动体验更是令人沮丧。Flutter Engine通过其先进的渲染架构&#xff0c;为长文本场景提供了完整的性能优化方案&#xff0c;让海…

作者头像 李华