首页 > 其他分享 >YC327B [ 20240821 CQYC NOIP 模拟赛 T2 ] 括号串(bracket)

YC327B [ 20240821 CQYC NOIP 模拟赛 T2 ] 括号串(bracket)

时间:2024-08-22 21:47:55浏览次数:12  
标签:frac dbinom NOIP sum 20240821 T2 括号 数量 德蒙

题意

给定 \(S \in \{ (, ), ? \}\)。

定义深度为括号嵌套的子序列的最大长度除以 \(2\)。

求出将 \(?\) 替换为括号的所有括号串的深度之和,对 \(998244353\) 取模。

\(n \le 10 ^ 6\)。

Sol

考虑如何把每次贡献只计算一次。

不难想到在括号的中心点计算。

可以发现,若当前左右括号的数量不同,可以向左或向右移动到相同的位置。

若中间遇到了右括号,则深度会增大,显然之前的就不是最优的位置了。

设 \(A\) 为前面的 ( 的数量,\(B\) 为后面 ) 的数量。

\(C\) 为前面的 ? 的数量,\(D\) 为后面 ? 的数量。

不难列出 \(n ^ 2\) 的式子(令 \(A > B\)):

\[\sum_{j = 0} ^ C \dbinom{C}{j} \dbinom{D}{j + A - B} (j + A) \]

将括号拆开:

\[A \sum_{j = 0} ^ C \dbinom{C}{C - j} \dbinom{D}{j + A - B} + \sum_{j = 0} ^ C j \dbinom{C}{C - j} \dbinom{D}{j + A - B} \]

前面直接范德蒙德卷积/组合意义,对于后面:

\[\sum_{j = 0} ^ C j\frac{C!}{j!(C - j)!} \frac{D!}{(j + A - B)!(D - j + B - A)!} \]

把 \(j\) 扔进去,提一个 \(C\) 出来。

\[C \sum_{j = 0} ^ C \frac{(C - 1)!}{(j - 1)!(C - j)!} \frac{D!}{(j + A - B)!(D - j + B - A)!} \]

\[C \sum_{j = 0} ^ C \dbinom{C - 1}{C - j} \dbinom{D}{j + A - B} \]

类似地,范德蒙德卷积/组合意义。

最终答案为:

\[A \dbinom{C + D}{C + A - B} + C \dbinom{C - 1 + 1}{A - B + C} \]

直接 \(O(n)\) 计算即可。

标签:frac,dbinom,NOIP,sum,20240821,T2,括号,数量,德蒙
From: https://www.cnblogs.com/cxqghzj/p/18374829

相关文章

  • 「代码随想录算法训练营」第四十四天 | 图论 part2
    200.岛屿数量题目链接:https://leetcode.cn/problems/number-of-islands/description/文章讲解:https://programmercarl.com/kamacoder/0099.岛屿的数量深搜.html题目难度:中等题目状态:看题解思路一:深搜版方法dfs:参数:接受一个字符网格grid和当前坐标(r,c)。功能:......
  • 信息学奥赛初赛天天练-72-NOIP2016普及组-基础题3-无向图、简单无向图、自环、平行边
    NOIP2016普及组基础题35以下不是存储设备的是()A光盘B磁盘C固态硬盘D鼠标6如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键A、字母键S、字母键D、字母键F的顺序循环按键,即CapsLock、A、S、D、F、CapsLock、A、S、D、F......
  • 洛谷P1540 [NOIP2010 提高组] 机器翻译答案
    #include<bits/stdc++.h>usingnamespacestd;/*数据结构:队列queue 桶:标记某个单词是否出现在内存中 t[i]=false:不在t[i]=true:在对于读入的每个单词x: 如果不存在单词x 存储(入队) t[x]=true 内存中元素个数(q.size())>M: t[q.front()]=falses; ......
  • YC327A [ 20240821 CQYC NOIP 模拟赛 T1 ] 最值(minmax)
    题意对于一个序列\({b_n}\),规定:\[f_min(b)=\prod_{i=1}^n(min_{j=1}^ib_j)\]\[f_max(b)=\prod_{i=1}^n(max_{j=1}^ib_j)\]给定一个序列\(a\),求\(a\)所有的排列\(p\)的\(f_min(p)\)与\(f_max(p)\)之和。\(n\le5000\)Sol不难想到一个简......
  • 【题解】Solution Set - NOIP2024集训Day12 树上启发式合并
    【题解】SolutionSet-NOIP2024集训Day12树上启发式合并https://www.becoder.com.cn/contest/5472「CF600E」Lomsatgelral直接dsuontree。记录每一个颜色的出现次数。「IOI2011」Race之前是用点分治做的。考虑dsuontree。每个子树内维护到根节点的距离为\(x\)......
  • 信息学奥赛初赛天天练-71-NOIP2016普及组-基础题2-进制转换、二进制转八进制、八进制
    NOIP2016普及组基础题24以下不是CPU生产厂商的是()AIntelBAMDCMicrosoftDIBM8与二进制小数0.1相等的八进制数是()A0.8B0.4C0.2D0.19以下是32位机器和64位机器的区别是()A显示器不同B硬盘大小不同C寻址......
  • 线性DP P1020 [NOIP1999 提高组] 导弹拦截
    前置:二分查找,最长单调不升子序列,最长单调不降子序列(dilworth)。题解:可以用来练习手写二分,二分优化的最长上升子序列时间复杂度O(nlogn)。但是坑是非常多的。代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e5+10;inta[N],n,......
  • Ros2 Moveit2 - Robot Model and Robot State
    RobotModelandRobotState 在本节中,我们将向您介绍用于在MoveIt中使用运动学的C++API。RobotModel和RobotState类RobotModel 和 RobotState 类是提供对机器人运动学访问权限的核心类。RobotModel 类包含所有链接和关节之间的关系,包括从URDF加载的关节限制属......
  • ROS2 Moveit2 - URDF 和 SRDF
    URDFMoveIt2从URDF(统一机器人描述格式)开始,这是用于在ROS和ROS2中描述机器人的原生格式。在本教程中,您将找到URDF的资源、重要提示以及MoveIt2特定要求的列表。URDF资源URDFROSWiki页面-URDF ROSWiki页面是关于URDF的大部分信息的来源。URDF教程-......
  • mormot2 json操作
    mormot2json操作procedureTcrud.select;vardb:Tdb;pool:Tdbpool;jo:Tdocvariantdata;i:integer;beginjo.init;trytrypool:=GetDBPool(DBID);db:=pool.Lock;fori:=0tohigh(sqls)dobeginDB.sele......