首页 > 其他分享 >CF785D - Anton and School - 2 | 组合数

CF785D - Anton and School - 2 | 组合数

时间:2024-03-19 16:24:51浏览次数:28  
标签:School CF785D int Anton long res fac binom mod

links

给定一个只包含 () 的括号序列,求形如 (())((())) ,的子序列总数。答案取模。
\(n \leq 2 \times 10 ^ 5\)

\(O(n ^ 2)\) 的暴力显然,关键是如何计算组合数。枚举最后一个 ( ,设左边还有 \(x\) 个 ( ,右边有 \(y\) 个 ) ,则答案为

\[\sum\limits_{i = 1} ^ {\min(x + 1, y)} \binom{x}{i- 1} \binom{y}{i} = \sum\limits_{i = 1} ^ {\min(x + 1, y)} \binom{x}{x - i + 1} \binom{y}{i} = \binom{x + y}{x + 1} \]

关键是中间的那一步变形,发现下面两个数字之和为定制 \(x + 1\) ,那么这个式子的含义就可以解读为在 \(x + y\) 个球中选取 \(x + 1\) 个球的方案数,求和符号实际是在枚举在后 \(y\) 个球中选几个。

不会组合数,太逊了。

#include <iostream>
#include <cstdio>
#include <cstring>
	using namespace std;
	const int mod = 1000000007;
	const int N = 200005;
	int fac[N], ifac[N];
	string st = "";
int fpow(int x, int k) {
	int res = 1;
	while (k) {
		if (k & 1) res = (long long)res * x % mod;
		x = (long long)x * x % mod;
		k >>= 1;
	}
	return res;
}
int calc(int n, int m) {
	return (long long)fac[n] * ifac[m] % mod * ifac[n - m] % mod;
}
int main() {
	cin >> st;
	int len = st.size();
	fac[0] = 1;
	for (int i = 1; i <= len; i++)
		fac[i] = (long long)fac[i - 1] * i % mod;
	for (int i = 0; i <= len; i++)
		ifac[i] = fpow(fac[i], mod - 2);
	int cnt0 = 0, cnt1 = 0;
	for (int i = 0; i < len; i++)
		cnt1 += (st[i] == ')');
	int ans = 0;
	for (int i = 0; i < len; i++) {
		cnt1 -= (st[i] == ')');
		if (st[i] == '(') {
			ans = (ans + calc(cnt0 + cnt1, cnt0 + 1)) % mod;
			cnt0++;	
		}
	}
	printf("%d\n", ans);
	return 0;
}

标签:School,CF785D,int,Anton,long,res,fac,binom,mod
From: https://www.cnblogs.com/kirakiraa/p/18083244

相关文章

  • P2746 [USACO5.3] 校园网Network of Schools 题解
    题目链接:校园网NetworkofSchools这个题得翻译下题目意思才知道在干嘛,题目一开始表明了这个是一个有向图,因为边是单向的。其次关于第一个问题:基于一个事实,如果有\(x\rightarrowy\rightarrowz\),那么只需要\(x\)接受协议,它所在的\(scc\)强连通分量上的点一定都能不需要......
  • P2746 [USACO5.3] 校园网Network of Schools
    原题链接题解把奶牛看成点,赠送列表关系看成有向边,这样这道题就成了对强连通分量缩点,然后找出这个新图中入度为零的点有几个,出度为零的点有几个code#include<bits/stdc++.h>usingnamespacestd;vector<int>G[105];intlen=0,cnt=0;intbelong[105]={0};intin[105]={0},......
  • 【2023年10月多校联训B层联赛2】 珠子 &&【October 2023 Multi-School League B Tier
    第一次用英语,见谅。为什么用英语?```Dev里懒得换输入法。```Link\(\textbf{gxyzoj\#3358}\)\(\textbf{LuoguU406794}\)DescriptionFhas\(n\)beadsarrangedinasequence,eachofwhichhasacolor,andatotalof\(m\)colors,numbered\(1,2,3,\cdots,......
  • 初中英语优秀范文100篇-071Changes in my school-我的学校发生的变化
    PDF格式公众号回复关键字:SHCZFW071记忆树1Whentalkingaboutourschool,weusuallyhavealottosay,includingtheteachers,thestudentsandsoon.翻译当谈论我们的学校时,我们通常有很多话要说,包括老师、学生等等。简化记忆谈论句子结构主语:we谓语:have宾......
  • 洛谷 P8426 [JOI Open 2022] 放学路(School Road)
    洛谷传送门LOJ传送门考虑整个图是一个点双怎么做。显然如果有重边并且两条边边权一样就寄了。否则我们可以把它们当成一条边。考虑一个二度点\(u\)和与它相连的边\((v,u),(u,w)\)。我们可以把它缩成边\((v,w)\)。如果新边已经存在并且边权不等于这两条边边权就寄了。......
  • 《大学计算机》课程简介 School of Computer Science and Engineering
    《大学计算机》课程简介SchoolofComputerScienceandEngineering阅读量:1630     发布时间:2014-05-25分享到: 《大学计算机》课程是大学计算机基础教学的最基本课程,是大学本科非计算机专业学生必修的公共基础课。计算机基础课程如同数学、外语一样,其教学内......
  • 全国计算机等级考试简介 School of Computer Science and Engineering
    全国计算机等级考试简介SchoolofComputerScienceandEngineering阅读量:1185     发布时间:2014-05-25分享到: 全国计算机等级考试(NationalComputerRankExamination,简称NCRE),是经原国家教育委员会(现教育部)批准,由教育部考试中心主办,面向社会,用于考查应试人......
  • 初中英语优秀范文100篇-039School Safety-校园安全
    PDF格式公众号回复关键字:SHCZFW039记忆树1Inmyopinion,it'simportantforustokeepsafeatschool.翻译在我看来,保持在学校的安全是非常重要的。简化记忆安全句子结构1"Inmyopinion"是一个插入语,表示这个句子提供的是作者的观点或看法。2"it'simportan......
  • 初中英语优秀范文100篇-029Sports in Our School-我们学校的运动
    PDF格式公众号回复关键字:SHCZFW029记忆树1Sportsinourschoolhavechangedalot.翻译我们学校的运动会发生了很多变化。简化记忆变化句子结构这是一个主谓宾结构的句子,其中"Sportsinourschool"是主语,表示我们学校的运动项目;"havechanged"是谓语动词,表示......
  • CF785D Anton and School - 2
    题意给定一个长度为\(n\)的括号序列,求该括号序列满足下列条件的子序列个数。长度为偶数设长度为\(2m\),则\(s_{1\ldotsm}=\)(,\(s_{m+1\ldots2m}=\))。Sol设\(i\)为最后一个(,\(a\)表示\(\sum_{j=1}^{i-1}[s_i='(']\)。\(b\)表示\(\sum_{j=i......