news 2026/4/18 7:12:56

《P3214 [HNOI2011] 卡农》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《P3214 [HNOI2011] 卡农》

题目描述

众所周知卡农是一种复调音乐的写作技法,小余在听卡农音乐时灵感大发,发明了一种新的音乐谱写规则。

他将声音分成 n 个音阶,并将音乐分成若干个片段。音乐的每个片段都是由 1 到 n 个音阶构成的和声,即从 n 个音阶中挑选若干个音阶同时演奏出来。

为了强调与卡农的不同,他规定任意两个片段所包含的音阶集合都不同。同时为了保持音乐的规律性,他还规定在一段音乐中每个音阶被奏响的次数为偶数。

现在的问题是:小余想知道包含 m 个片段的音乐一共有多少种。
两段音乐 a 和 b 同种当且仅当将 a 的片段重新排列后可以得到 b。例如:假设 a 为 {{1,2},{2,3}},b 为 {{2,3},{1,2}},那么 a 与 b 就是同种音乐。

答案对 108+7 取模。

输入格式

仅一行两个正整数 n,m

输出格式

输出一行一个整数表示答案。

输入输出样例

输入 #1复制

2 3

输出 #1复制

1

说明/提示

【数据范围】
对于 20% 的数据,1≤n,m≤5;
对于 50% 的数据,1≤n,m≤3000;
对于 100% 的数据,1≤n,m≤106。

【样例解释】
音乐为 {{1},{2},{1,2}}

代码实现:

#include<bits/stdc++.h> using namespace std; typedef long long ll; namespace FGF { int n, m; const int N = 1e6 + 5, mod = 1e8 + 7; int A[N], F[N]; int qp(int a, int b) { int res = 1; while(b) { if(b & 1) res = 1ll * res * a % mod; a = 1ll * a * a % mod; b >>= 1; } return res; } void wk() { scanf("%d%d", &n, &m); int tot = (qp(2, n) - 1 + mod) % mod; int fac = 1; A[0] = 1; for(int i = 1; i <= m; ++i) { A[i] = 1ll * A[i-1] * (tot - i + 1 + mod) % mod; fac = 1ll * fac * i % mod; } F[0] = 1, F[1] = 0; for(int i = 2; i <= m; ++i) { F[i] = ((A[i-1] - F[i-1] - 1ll * F[i-2] * (i-1) % mod * (tot - (i-2)) % mod) % mod + mod) % mod; } printf("%lld", 1ll * F[m] * qp(fac, mod - 2) % mod); } } int main() { FGF::wk(); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 12:58:24

WinBtrfs完整指南:在Windows系统上部署Linux原生文件系统

WinBtrfs完整指南&#xff1a;在Windows系统上部署Linux原生文件系统 【免费下载链接】btrfs WinBtrfs - an open-source btrfs driver for Windows 项目地址: https://gitcode.com/gh_mirrors/bt/btrfs 对于需要在Windows环境中访问Linux存储设备的用户来说&#xff0c…

作者头像 李华
网站建设 2026/4/17 23:50:02

华为光猫配置解密工具完整使用指南:快速掌握网络运维核心技术

网络运维工作中是否经常遇到华为光猫配置无法查看的困扰&#xff1f;配置参数调整缺乏有效依据&#xff1f;今天我们将全面解析这款专业级华为光猫配置解密工具&#xff0c;帮助您彻底解决网络运维中的配置管理难题。 【免费下载链接】HuaWei-Optical-Network-Terminal-Decoder…

作者头像 李华
网站建设 2026/4/18 5:41:00

Umi-OCR终极指南:如何用免费开源工具实现高效离线文字识别?

Umi-OCR终极指南&#xff1a;如何用免费开源工具实现高效离线文字识别&#xff1f; 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://…

作者头像 李华
网站建设 2026/4/17 20:26:44

网易云音乐智能升级助手:轻松实现每日300首自动播放

网易云音乐智能升级助手&#xff1a;轻松实现每日300首自动播放 【免费下载链接】neteasy_music_sign 网易云自动听歌打卡签到300首升级&#xff0c;直冲LV10 项目地址: https://gitcode.com/gh_mirrors/ne/neteasy_music_sign 还在为网易云音乐的等级提升而耗费大量时间…

作者头像 李华
网站建设 2026/4/18 0:22:00

终极解决方案:如何彻底优化Windows系统性能

终极解决方案&#xff1a;如何彻底优化Windows系统性能 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirrors/wi/windows-de…

作者头像 李华
网站建设 2026/4/18 0:20:47

Windows平台iOS模拟器完整指南:轻松运行iPhone应用

Windows平台iOS模拟器完整指南&#xff1a;轻松运行iPhone应用 【免费下载链接】ipasim iOS emulator for Windows 项目地址: https://gitcode.com/gh_mirrors/ip/ipasim 想在Windows电脑上体验iOS应用吗&#xff1f;ipasim是一款专门为Windows系统设计的开源iOS模拟器&…

作者头像 李华