首页 > 其他分享 >题解 CF1264D2

题解 CF1264D2

时间:2023-04-29 11:22:06浏览次数:42  
标签:dbinom 题解 sum aligned displaystyle CF1264D2 D1

前言

建议大家看一下我对于 D1 的题解(传送门)后再看本题解,本题解是基于那篇题解的基础上书写的。

数学符号约定

\(\dbinom{n}{m}\):表示 \(n\) 选 \(m\) 。

如非特殊说明,将会按照上述约定书写符号。

题目分析

首先引用一下 D1 的答案:\(\displaystyle\sum_{i=1}^n\displaystyle\sum_{j=0}^n j\dbinom {s_2}{j-s_1} \dbinom{s_4}{j-s_3}\)

我相信你已经看我我关于 D1 的题解了,现在考虑对那个做法进行优化。

观察一下,发现里面的和式看起来比较好欺负一点,于是考虑优化 \(\displaystyle\sum_{j=0}^n j\dbinom {s_2}{j-s_1} \dbinom{s_4}{j-s_3}\)。

我们先拆一下:

\[\begin{aligned} &\sum_{j=0}^{n} j\dbinom {s_2}{j-s_1} \dbinom{s_4}{j-s_3}\\ =&\sum_{j=0}^{n} (j-s_1+s_1) \dbinom {s_2}{j-s_1} \dbinom{s_4}{j-s_3}\\ =&\sum_{j=0}^{n} (j-s_1) \dbinom {s_2}{j-s_1} \dbinom{s_4}{j-s_3} + \sum_{j=0}^{n} s_1 \dbinom {s_2}{j-s_1} \dbinom{s_4}{j-s_3}\\ =&\sum_{j=0}^{n} (j-s_1) \dbinom {s_2}{j-s_1} \dbinom{s_4}{j-s_3} + s_1\sum_{j=0}^{n} \dbinom {s_2}{j-s_1} \dbinom{s_4}{j-s_3} \end{aligned} \]

考虑前面的:

\[\begin{aligned} &\sum_{j=0}^{n} (j-s_1) \dbinom {s_2}{j-s_1} \dbinom{s_4}{j-s_3}\\ =&\sum_{j=0}^{n} (j-s_1) \frac {s_2}{j-s_1} \dbinom {s_2-1}{j-s_1-1} \dbinom{s_4}{j-s_3}\\ =&s_2 \sum_{j=0}^{n} \dbinom {s_2-1}{j-s_1-1} \dbinom{s_4}{s_4+s_3-j}\\ \end{aligned} \]

考虑一下 \(\displaystyle\sum_{j=0}^{n} \dbinom {s_2-1}{j-s_1-1} \dbinom{s_4}{s_4+s_3-j}\) 的组合意义,可以得出:

\[\sum_{j=0}^{n} \dbinom {s_2-1}{j-s_1-1} \dbinom{s_4}{s_4+s_3-j} = \dbinom{s_2+s_4-1}{s_4-s_1+s_3-1} \]

于是原式变成:

\[s_2\dbinom{s_2+s_4-1}{s_4-s_1+s_3-1} \]

现在再考虑后面的:

\[\begin{aligned} &s_1\sum_{j=0}^{n} \dbinom {s_2}{j-s_1} \dbinom{s_4}{j-s_3}\\ =&s_1\sum_{j=0}^{n} \dbinom {s_2}{j-s_1} \dbinom{s_4}{s_4+s_3-j}\\ =&s_1\dbinom{s_2+s_4}{s_4+s_3-s_1} \end{aligned} \]

故最后答案变成:

\[\sum_{i=1}^n\sum_{j=0}^n j\dbinom {s_2}{j-s_1} \dbinom{s_4}{j-s_3} = \sum_{i=1}^n s_2\dbinom{s_2+s_4-1}{s_4-s_1+s_3-1}+s_1\dbinom{s_2+s_4}{s_4+s_3-s_1} \]

发现可以 \(\mathcal O (n)\) 求解。

注意事项参见 D1 的题解。

代码实现

这里给出了关键部分的代码实现,其余部分还恳请读者自己完成:

// sum1 表示 `(` 数量的前缀和
// sum2 表示 `)` 数量的前缀和
// sum3 表示 `?` 数量的前缀和
int ans = 0;
for (int i = 1; i <= n; i++) {
    int s1 = sum1[i];
    int s2 = sum3[i];
    int s3 = sum2[n] - sum2[i];
    int s4 = sum3[n] - sum3[i];
    ans = add(ans, mul(s1, C(s2 + s4, s4 + s3 - s1)));
    ans = add(ans, mul(s2, C(s2 + s4 - 1, s4 + s3 - s1 - 1)));
}
cout << ans << endl;

标签:dbinom,题解,sum,aligned,displaystyle,CF1264D2,D1
From: https://www.cnblogs.com/larry76/p/17363733.html

相关文章

  • [ARC125E] Snack 题解
    不难发现一个较简单的网络流模型:源点向所有糖果\(i\)连\(a_i\)的容量;所有糖果向所有人\(i\)连\(b_i\)的容量;所有人\(i\)向汇点连\(c_i\)的容量。但第二步中建出的边数达到了惊人的\(O(nm)\),显然过不去。考虑优化。从最大流角度优化较困难,由于最大流等价于最小......
  • P4423 题解
    前言题目传送门!更好的阅读体验?刚学分治就来写篇题解纪念一下,其实和平面最近点对一样的(总共四倍经验!)。思路根据P7883的分治思路,这题我们可以考虑用相似的方法解决。首先将点集按\(x\)坐标从小到大排序。然后分治。对于\(\left[l,r\right]\)区间,分治为\(\left[l,mid......
  • 题解 P3225 [HNOI2012] 矿场搭建
    解析传送门一道简单的tarjan题题意:在无向图中找一些点,这些点组成的的点集记为\(V\),使得去掉任意一个点,剩下的每一个点都可以到达\(V\)中任意一个点,求点集\(V\)的大小的最小值及其方案数。去掉一个点,很自然的联想到割点,那么考虑一下割点在不在备选集合中。如图,显然可以看出,......
  • Codeforces Round 868 (Div. 2) A-E题解
    比赛地址这把真不在状态,麻了,看来还得再练A.A-characteristic题意:给出n和k,要求构造只含1和-1数组a,存在k对(i,j)(i≠j),有a[i]*a[j]=1Solution令构造的数组有x个1和y个-1,那么其对于答案的贡献有\[x*(x-1)/2+y*(y-1)/2\]又因为有x+y=n,所以可以转化成关于x的一元二次方程化简后......
  • COMPSCI 589 问题解答
    COMPSCI589Homework4-Spring2023DueMay6,2023,11:55pmEasternTime1InstructionsThishomeworkassignmentconsistsofaprogrammingportion.Whileyoumaydiscussproblemswithyourpeers,youmustanswerthequestionsonyourownandimplementall......
  • P4681 [THUSC2015]平方运算 题解
    题面链接简要题意给定一个序列,区间.map([](intx){x=x*x%p;});,区间求和。p给定,为小质数。\(N,M\le10^5\)。题解而把一个数看作一个点,向其平方取模连一条边,则最终必然构成一个基环森林,注意到\(P\)很小,每个数经过\(11\)次迭代之后就会进入环中。对于一个区间,如......
  • “makefile:425: *** 遗漏分隔符 。 停止。”问题解决
    在终端下输入make时出现“makefile:2:***遗漏分隔符。停止。”问题,原因是在编写makefile文件时:3:3.c        gcc-o33.cgcc前的是tab分隔符,不能用空格,否则会出现“makefile:2:***遗漏分隔符。停止。”提示。。。make中规定每一Shell命令之前的开头必须使用<t......
  • 题解(开始学知识点
    D.FrogTraveler1900dpgq!https://codeforces.com/contest/1602/problem/D题解:我们可以通过类似bfs的过程找到每个点的能到达的所需步数最小的点,完成更新,但每个点能被哪些点到达很难判断,故我们反过来考虑,如果我们能得到从n->0的最短跳跃次数,亦得解,而每个点下一步能到达的点容......
  • P1345 [USACO5.4]奶牛的电信Telecowmunication 题解
    一、题目描述:n个点,m条边,给定起点s和终点t,求最少删去几个点后,s和t不连通。注意,s和t不能删掉。1<=n<=100,1<=m<=600; 二、解题思路:刚刚学了最大费用流,知道最大流等于最小割。但此题割的不是边,是点。我们需要将将割点转化为割边。把一个点切成两半......
  • 【题解】P3185 [HNOI2007]分裂游戏
    P3185[HNOI2007]分裂游戏题目描述聪聪和睿睿最近迷上了一款叫做分裂的游戏。该游戏的规则是:共有\(n\)个瓶子,标号为\(0,1,\ldots,n-1\),第\(i\)个瓶子中装有\(p_i\)颗巧克力豆,两个人轮流取豆子,每一轮每人选择\(3\)个瓶子,标号为\(i,j,k\),并要保证\(i\ltj,j......