【学习笔记】[AGC040F] Two Pieces
创始人
2024-05-16 23:45:36

我是丝薄因为我不会GF

考虑纯组合意义的推导。因为我真的不会数学啊

设(x,d)(x,d)(x,d)表示最大值为xxx,最小值和最大值之差为ddd的方案数。那么相当于:
1.11.11.1 d(≥2)d(\ge 2)d(≥2)减去111
1.21.21.2 xxx,ddd同时加上111
1.31.31.3 ddd变成000

显然操作222的数目为定值。先固定每种操作的数目,那么合法的排列一定是c3c_3c3​段折线,最后一段折线的终点高度恰好是B−AB-AB−A,并且每一段折线除起点外都在y=1y=1y=1上方。

那么我们考虑,如果折线是连续的话,对于分段的位置,一定是后缀的最低点(换句话说是后缀和中严格最大的那个点),又因为后缀和是连续的所以恰好有c2−c1c_2-c_1c2​−c1​个这样的位置,并且最后一个分段的位置要恰好为B−AB-AB−A,注意到开头也可以进行若干个操作333,并且一段折线是空也是合法的,那么答案是(c2−c1−B+A+c3−1c3−1)\binom{c_2-c_1-B+A+c3-1}{c_3-1}(c3​−1c2​−c1​−B+A+c3−1​)。又因为合法的折线数目是(c1+c2−1c2−1)−(c1+c2−1c2)\binom{c_1+c_2-1}{c_2-1}-\binom{c_1+c_2-1}{c_2}(c2​−1c1​+c2​−1​)−(c2​c1​+c2​−1​),乘起来即可。

复杂度O(n)O(n)O(n)。

#include
#define fi first
#define se second
#define ll long long
#define pb push_back
#define inf 0x3f3f3f3f
using namespace std;
const int mod=998244353;
const int N=2e7+5;
int n,A,B;
ll fac[N],inv[N],res;
ll fpow(ll x,ll y=mod-2){ll z(1);for(;y;y>>=1){if(y&1)z=z*x%mod;x=x*x%mod;}return z;
}
void init(int n){fac[0]=1;for(int i=1;i<=n;i++)fac[i]=fac[i-1]*i%mod;inv[n]=fpow(fac[n],mod-2);for(int i=n;i>=1;i--)inv[i-1]=inv[i]*i%mod;
}
ll binom(int x,int y){if(x<0||y<0||xif(c3==0)return (c2-c1==B-A)?(binom(c1+c2-1,c2-1)-binom(c1+c2-1,c2)):0;return binom(c2-c1-B+A+c3-1,c3-1)*(binom(c1+c2-1,c2-1)-binom(c1+c2-1,c2))%mod;
}
signed main(){cin>>n>>A>>B,init(n<<1);if(A==0&&B==0){cout<<1;return 0;}for(int i=0;i<=n-B;i++){res=(res+solve(i,B,n-i-B))%mod;}cout<<(res+mod)%mod;
}

相关内容

热门资讯

张帅梅尔滕斯澳网女双夺冠 (来源:新华日报) 1月31日,在2026年澳大利亚网球公开赛女双决赛中,中国选手张帅和比利时...
河南淅川:丹江湿地 候鸟乐园 【生态印记】  光明日报记者 丁艳 光明日报通讯员 李金杭  冬日清晨,河南省南阳市淅川县丹江湿地烟...
歌舞传情,共飨文化盛宴 ●兵团日报常驻记者 左洁 “太震撼了!看完演出,我深深感受到了兵团人扎根边疆、无怨无悔的赤诚...
发挥比较优势 坚持稳中求进 ... 新华社北京1月31日电 中共中央政治局1月30日下午就前瞻布局和发展未来产业进行第二十四次集体学习...
小项目办大实事 四师六十四团八连职工古丽巴哈·吐尔逊阿力:镇江援疆“微项目”虽小,却办成了大实事!九连活动室在镇江句...