首页 > 小红的连续段
头像 Lambda_L
发表于 2026-03-19 00:29:50
一、核心数学原理1. 连续段的拆分规律x 个 'a' 要分成 p 个连续段:需要在 x-1 个相邻 'a' 之间的间隙中选 p-1 个位置分割,方法数为组合数 C(x-1, p-1)(比如 2 个 a 分成 1 段:C(1,0)=1;分成 2 段:C(1,1)=1)。y 个 'b' 要分成 q 个连 展开全文
头像 AliLexiWalker
发表于 2026-03-19 00:12:06
组合计数(隔板法)+ 预处理阶乘逆元 固定连续段数 i 后,字符串只可能是 a 开头或 b 开头两种;每种情况下,把 x 个 a、y 个 b 分成对应段数,方案数就是 这种形式相乘。 两种开头的结果相加,就是该 i 的答案,i 从 1 到 x+y 依次算完输出。 cpp py void 展开全文
头像 此在Dasein
发表于 2026-03-19 05:48:19
1. 问题分析 本问题的核心是在给定两种字符('a' 与 'b')数量限制的前提下,计算构造出的字符串及其“连续段”数量。 核心约束: 字符数量: 固定包含 个 'a' 和 个 'b'。 连续段定义: 极长的相同字符序列。这意味着 'a' 的连通块与 'b' 的连通块必须交替出现。 规模: , 展开全文
头像 腌萝卜干
发表于 2026-03-19 10:39:25
简单题 非常像寒假营第六场的计数题小 L 的彩球 #include <bits/stdc++.h> #define x first #define y second #define all(x) x.begin(), x.end() using namespace std; usin 展开全文
头像 olone
发表于 2026-03-19 11:19:22
#include<bits/stdc++.h> #define int unsigned long long using namespace std; const int N = 1005; const int mod = 1e9+7; inline int qpower(int 展开全文
头像 Venture_
发表于 2026-03-19 14:27:40
#include <bits/stdc++.h> using namespace std; using ll = long long int; using ld = long double; using PII=pair<ll,ll>; using PIII=pair< 展开全文
头像 威猛的懒羊羊在午休
发表于 2025-04-26 19:53:46
考虑x+y长度的字符串被分成了n块1、n=2k那么一定是k块为a,k块为b,考虑把长度为x的字符串分成k块,也就是x-1个空隙插入k-1个隔板,方案是C(x-1, k-1)。长度为y的字符串分成k块同理,然后可以先是a也可以先是b,所以答案是2*C(x-1, k-1)*C(y-1, k-1)2、n= 展开全文
头像 lemonyyds
发表于 2026-03-19 11:42:04
由于主包不会逆元,但注意到x,y较小,于是使用了组合数的递推公式:c(n)(k) = c(n-1)(k) + c(n-1)(k-1)然后就是隔板法,代码如下: import java.util.*; public class Main { public static void main(St 展开全文
头像 quchen666
发表于 2026-03-19 13:55:30
#include <bits/stdc++.h> using namespace std; const int mod = 1e9+7; const int N = 2e3+10; typedef long long ll; ll fac[N]; ll inv[N]; ll qpow( 展开全文
头像 TheDemonMoon
发表于 2026-03-19 16:47:54
#include <stdio.h> const int MOD = 1000000007; const int MAX = 1005; // 对应 x,y <= 1000 的限制 long long fact[MAX]; // 阶乘数组 long long inv[MAX 展开全文

等你来战

查看全部