首页 > 其他分享 >Split and Maximize

Split and Maximize

时间:2024-10-15 21:32:25浏览次数:7  
标签:dfrac times Split Maximize 2n jc 2i mod

Split and Maximize

根据常识可知,肯定是 \(\sum_{i=1}^n 2i(2i-1)\) 最大,通俗来讲就是相邻两个数相乘是最优的。

要达到这个得分,我们应该将 \(2i\) 和 \(2i-1\) 一个分给 \(A\),一个分给 \(B\),并且要保证先后顺序一样,保证 \(2i\) 可以与 \(2i-1\) 配对。

把 \(2i\) 看作 (,把 \(2i-1\) 看作 ),答案一定是一个合法的括号序列。

长度为 \(2n\) 的合法括号序列个数可以用卡特兰数解决,等于 \(\dbinom{2n}{n}-\dbinom{2n}{n-1}=\dfrac{(2n)!}{n!\times n!}-\dfrac{(2n)!}{(n+1)!\times (n-1)!}=\dfrac{(n+1)(2n)!}{n!\times (n+1)!}-\dfrac{n(2n)!}{(n+1)!\times n!}=\dfrac{(2n)!}{(n+1)!\times n!}\)。

对于一个合法的括号序列,由于 ( 两两意义不同,答案需乘上 \(n!\) 表示 ( 的排列数,一旦 ( 的顺序确定了,) 的顺序也唯一了,因此不需要讨论 ) 的排列数。因为 \(2i\) 和 \(2i-1\) 的位置可以调换,所以答案应该再乘上 \(2^n\)。

最终答案是 \(\dfrac{(2n)!}{(n+1)!\times n!}\times n!\times 2^n\)。

时间复杂度 \(O(n)\)。

Code

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
using namespace std;
typedef long long ll;
const int N=2e5+3,mod=998244353;
int n;
ll jc(ll a){
	ll s=1;
	for(int i=1;i<=a;i++){
		s=s*i%mod;
	}
	return s;
}
ll ksm(ll a,ll b){
	ll s=1;
	while(b){
		if(b&1) s=s*a%mod;
		a=a*a%mod;
		b>>=1;
	}
	return s;
}
int main(){
	sf("%d",&n);
	pf("%lld\n",jc(2*n)*ksm(jc(n)*jc(n+1)%mod,mod-2)%mod*jc(n)%mod*ksm(2,n)%mod);
}

标签:dfrac,times,Split,Maximize,2n,jc,2i,mod
From: https://www.cnblogs.com/liyixin0514/p/18468538

相关文章

  • Guava中的Joiner和Splitter
    目录Guava介绍Joinerlist转stringmap转string处理嵌套集合处理null值Splitterstring转liststring转map多个拆分符输出代码Guava介绍Guava是Google开发的一个开源Java库,提供一系列核心功能增强Java的标准库。它包含许多有用的工具和集合类,使Java开发更加高效,代码更加......
  • Linux csplit命令
    csplit命令在Linux中用于将文件分割成多个部分,基于指定的模式或固定数量的行。与split命令不同,csplit允许更复杂的分割条件,例如基于正则表达式匹配或特定字符的出现次数。基本语法csplit[选项]文件名模式文件名:要分割的文件。模式:分割文件的依据,可以是正则表达式或数字。......
  • 带你0到1之QT编程:十五、探索QSplitter和QDockWidget的简单应用技巧
    此为QT编程的第十五谈!关注我,带你快速学习QT编程的学习路线!每一篇的技术点都是很很重要!很重要!很重要!但不冗余!我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点!码农不易,各位学者学到东西请点赞支持支持!开始部分:总:QSplitter提供的是一种灵活的可拖拉布局方式来管......
  • Python 中的 strip() 和 split() 方法详解
    目录一、strip()方法1.什么是strip()?2.基本语法3.基本用法示例1)去除空白字符2)移除指定字符4.lstrip()和rstrip()5.注意事项二、split()方法1.什么是split()?2.基本语法3.基本用法示例1)按空格分割字符串2)指定分隔符3)限制分割次数4.rsplit()方法......
  • 题解:CF1906F Maximize The Value
    可以在cnblog中阅读。见这种题比较少,写篇题解加深印象。如果直接上数据结构维护数组,似乎没有好的办法处理操作序列的一个子段。那不妨转变思路,对操作序列上数据结构维护。假设顺序进行每个修改操作,我们用时间表示修改操作的编号,位置表示数组的下标,则常见的维护序列的数据结构......
  • GBase 8s 自定义split_part函数
    gbase数据该函数的功能:以第二个参数separator_in分隔第一个参数str_in,返回第三个参数field_in指定字段。dropfunctionifexistssplit_part2;createfunctionsplit_part2(str_inlvarchar(2048),separator_inchar(1),field_inint)returningvarchar(255);def......
  • OpenCV(cv::split())
    目录1.函数定义2.工作原理3.示例4.使用场景5.注意事项cv::split()是OpenCV提供的一个函数,用于将多通道图像分割成其各个单通道。该函数主要用于处理彩色图像和多通道矩阵,通常用于对图像中的每个颜色通道单独进行处理。1.函数定义voidcv::split(constMat&src,s......
  • 【鸿蒙应用开发】常见的容器组件:ColumnSplit、RowSplit和Flex
    上一章已经了解了Column和Row的一些属性,以下是几个案例:设置子组件水平方向的间距为:5@Entry@Preview@ComponentstructIndex{@Statemessage:string='Hello鸿蒙';controller:webview.WebviewController=newwebview.WebviewController();build(){Column(......
  • 5 levels of text splitting
    https://github.com/langchain-ai/langchain/blob/master/cookbook/Multi_modal_RAG.ipynb Inthistutorialwearereviewingthe5LevelsOfTextSplitting.Thisisanunofficiallistputtogetherforfunandeducationalpurposes.Evertrytoputalongpiece......
  • 3 Split
    赛场上想到了n方枚举n方检验的4方做法,提前想好了实现细节一点点实现,最后一遍过了样例,还是很感动的赛场上超时了,但是交到Codeforces上能以900ms通过正解的确是n^3的,考虑优化枚举,确定1号节点在A后,对于每个1->x->y->1的三元环,要么x在B,y在C,要么x,y都在A,无论如何,x和y都不用被访问第......