news 2026/6/12 22:10:31

每日一题: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/6/12 0:55:25

overlay文件系统

overlay文件系统转载&#xff1a;https://www.cnblogs.com/linhaostudy/p/17534948.html

作者头像 李华
网站建设 2026/6/12 15:57:50

符合《生成式人工智能服务管理办法》要求

EmotiVoice 高表现力语音合成技术深度解析 在数字人、虚拟助手和智能客服日益普及的今天&#xff0c;用户早已不再满足于“能说话”的机器声音。他们期待的是有情感、有个性、像真人一样自然表达的语音交互体验。传统TTS系统虽然发音准确&#xff0c;但语调单调、缺乏情绪变化&…

作者头像 李华
网站建设 2026/6/11 3:00:29

前端新人必看:彻底搞懂CSS3 box-sizing怪异模式(避坑指南+实战

前端新人必看&#xff1a;彻底搞懂CSS3 box-sizing怪异模式&#xff08;避坑指南实战前端新人必看&#xff1a;彻底搞懂CSS3 box-sizing怪异模式&#xff08;避坑指南实战技巧&#xff09;为什么我的盒子总比想象中胖&#xff1f;盒模型的两种面孔&#xff1a;标准模式 vs 怪异…

作者头像 李华
网站建设 2026/6/12 1:41:27

ViGEmBus虚拟手柄驱动实战高效使用指南

ViGEmBus虚拟手柄驱动实战高效使用指南 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus ViGEmBus虚拟手柄驱动技术为Windows平台游戏体验带来了革命性突破。这款强大的内核级驱动能够完美模拟主流游戏手柄设备&#xff0c;让各种输入…

作者头像 李华
网站建设 2026/6/12 18:58:43

聊一下code第4题,寻找两个正序数组的中位数

今天先讲简单方法&#xff0c;其实我发现简单方法也是2ms跑完&#xff08;先贴代码&#xff0c;再分块讲&#xff1a;class Solution {这是答题类&#xff0c;目标是合并后直接输出public double findMedianSortedArrays(int[] nums1, int[] nums2) {int[] merged mergeTwo(nu…

作者头像 李华
网站建设 2026/6/12 0:21:25

Qwen3-235B-A22B-MLX-8bit:革命性大语言模型的智能进化之路

Qwen3-235B-A22B-MLX-8bit&#xff1a;革命性大语言模型的智能进化之路 【免费下载链接】Qwen3-235B-A22B-MLX-8bit 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-235B-A22B-MLX-8bit 在人工智能技术飞速发展的今天&#xff0c;通义千问团队推出的Qwen3-23…

作者头像 李华