当前位置: 首页 > news >正文

写程序or打游戏(组合计数)

L-打游戏 or 写程序_河南萌新联赛2025第(七)场:郑州轻工业大学(重现赛)

星与条定理

    将 m 个相同物品放入 r 个不同盒子" 的方法数是 C (m+r-1, r-1)

分析

1. 设定变量

假设在序列中,打游戏(1)出现了 i 次,那么写程序(0)就出现了 n-i 次(因为总事件数是 n)。

2. 必须的间隔

因为两个打游戏之间至少有 k 个写程序,所以 i 次打游戏之间有 (i-1) 个间隔,每个间隔至少需要 k 个 0。
这些是 "硬性要求",必须满足,所以总共用掉了 (i-1)×k 个 0。

3. 剩余的自由度

总共有 n-i 个 0,减去必须用掉的 (i-1)×k 个 0,剩下的 0 数量是:
剩余0 = (n-i) - (i-1)×k
这些剩下的 0 可以自由分配,没有数量限制(可以是 0 个或多个)

4. 分配剩余的 0(关键步骤)

这些剩余的 0 可以放在哪里?有 (i+1) 个位置可以放:

代码

using namespace std;
#define int long long
#define endl '\n'
#define PII pair<int, int>
#define LL long long
const int N = 2e6 + 10, M = 1e7, inf = 1e18;
const int mod = 1e9 + 7;LL fac[N], infac[N]; // C a b == a! / (*b! * (a - b)!) == a! * (b!)[逆元] * (a - b)![逆元]
// fac[a] = a! % mod;  infac[b] = (b!)[逆元] LL qmi(LL a, LL k) {LL ans = 1;while (k) {if (k & 1) ans = ans * a % mod;k >>= 1;a = a * a % mod;}return ans;
}void intal(int n) {fac[0] = infac[0] = 1;for (int i = 1; i <= n; i ++ ) {fac[i] = fac[i - 1] * i % mod;infac[i] = infac[i - 1] * qmi(i, mod - 2) % mod;}
}int C(int a, int b) {if (a < b || a < 0 || b < 0) return 0;return fac[a] * infac[b] % mod * infac[a - b] % mod;
}void solve() {int n, k;cin >> n >> k;intal(n + k);int ans = 0;for (int i = 0; i <= n; i ++ ) {ans = (ans + C(i - (n - i - 1) * k + n - i, n - i)) % mod;}cout << ans << endl;}signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T = 1;// cin >> T;while (T -- ) {solve();}return 0;
}


文章转载自:

http://PDFGztzh.zkzjm.cn
http://lO2m93sV.zkzjm.cn
http://7rXusOFG.zkzjm.cn
http://L23zzr9V.zkzjm.cn
http://XuRPKGkX.zkzjm.cn
http://11cmYuJQ.zkzjm.cn
http://tFLghjSF.zkzjm.cn
http://qfQhtaan.zkzjm.cn
http://Eqe38hVR.zkzjm.cn
http://pPRVrKnS.zkzjm.cn
http://8e87QdMJ.zkzjm.cn
http://YmcbVLe3.zkzjm.cn
http://7p4jHpoM.zkzjm.cn
http://8ZHZr7Tw.zkzjm.cn
http://shZanAYt.zkzjm.cn
http://9FcMq0rA.zkzjm.cn
http://kz9p1wf8.zkzjm.cn
http://YJFKSUp1.zkzjm.cn
http://UGmLvB4M.zkzjm.cn
http://VTnkev9Q.zkzjm.cn
http://YDHcekdX.zkzjm.cn
http://7zKItY3i.zkzjm.cn
http://8i3VJ8vu.zkzjm.cn
http://pQe2yY4A.zkzjm.cn
http://X9zjdHa8.zkzjm.cn
http://NN857mwk.zkzjm.cn
http://FiPLWjTi.zkzjm.cn
http://LZ4W0P0u.zkzjm.cn
http://PQXfCMjo.zkzjm.cn
http://6RZNsxK0.zkzjm.cn
http://www.dtcms.com/a/372573.html

相关文章:

  • 生成式AI基石之一:变分自编码器(VAE)详解:从架构到数学的深度指南
  • VXLAN集中式网关实验案例
  • 培训学校押金原路退回-企业自动运营——东方仙盟
  • Ubuntu系统的备份和恢复方法
  • 【已解决】Linux中程序脚本可以手动执行成功,但加在rc.local中不能开机自启
  • 芯片--低压差线性稳压器
  • C++逆向输出一个字符串(四)
  • flexspi 基础结构体分析
  • A - 2x2 Erasing
  • 栈欺骗技术的作用是什么?
  • 细说分布式ID
  • nginx自动剔除与恢复
  • tmi8150B控制ir_cut
  • 【期末复习】嵌入式——S5PV210开发板
  • 基于brpc的轻量级服务注册中心设计与实现
  • 作用域報錯
  • 代码随想录学习摘抄day7(二叉树11-21)
  • 固态硬盘——M.2接口技术
  • 数字化浪潮下,传统加工厂如何智能化转型?
  • Miniflux – RSS 订阅
  • Nginx主配置文件
  • 架构进阶——解读121页IT规划咨询项目规划报告【附全文阅读】
  • 大模型显存占用量换算
  • Compose笔记(五十)--stickyHeader
  • WebGIS三维可视化 + 数据驱动:智慧煤仓监控系统如何破解煤炭仓储行业痛点
  • 刷题集(1)
  • 别墅装修的价钱如何估算?
  • Pycharm远程连接Jetson Orin Super
  • Java注意事项
  • PLC_博图系列☞基本指令”S_ODTS:分配保持型接通延时定时器参数并启动“