首页 > 其他分享 >CF1919E Counting Prefixes

CF1919E Counting Prefixes

时间:2024-06-07 09:44:48浏览次数:23  
标签:数列 sum Prefixes CF1919E Counting 代码

CF1919E Counting Prefixes

Rating:2600

题目大意

有一个由 -11 构成的数列 \(A\)。告诉你它的前缀和升序排序的数列 \(P\)。求有多少个满足方案的数列 \(A\)。

多组数据,其中 \(A\) 的长度 \(n\) 有。

\(\sum n \leq 5000\)。

解题思路

首先我们考虑枚举 \(s = \sum A\)。

我们考虑先往右边“走”。构建一个序列 \(\{1,1,\cdots,1,-1,-1,\cdots,-1\}\)。

接着我们往里面插入一些 \(\{-1,1\}\) 这样会使得当前位置 \(P\) 以及 \(P-1\) 多出现一次。

这样我们可以考虑从最高点 \(P_n\) 开始往下补全它们的出现次数。

若一个位置 \(P_i\) 需要出现 \(C_i\) 次,已经出现过 \(B_i\) 次,我们将一些 \(\{-1,1\}\) 插入到 \(B_i\) 个位置中。根据排列组合知识可以得到其对答案的贡献为。

\[\binom{C_i-1}{B_i-1} \]

我们在 \(O(n^2)\) 的时间复杂度内解决了这个问题。

代码实现

代码实现中有非常多需要注意的细节。

  • 对于起点情况的处理
  • 对于不合法情况的判断
  • 初始序列的构建

建议先参考代码,仔细思考。

参考代码

标签:数列,sum,Prefixes,CF1919E,Counting,代码
From: https://www.cnblogs.com/DeepSeaSpray/p/18236554

相关文章

  • Counting Rhyme
    题面翻译给定长度为\(n\)的序列\(a\)。对于\(1\leqi<j\leqn\),若不存在\(k\in[1,n]\)使得\(a_k\mida_i\)且\(a_k\mida_j\)那么\((i,j)\)是好的。求出好的数对数量。\(1\lea_i\len\leq10^6\)。题目描述Youaregivenanarrayofintegers$a_1,a_2,\ldot......
  • 题解:P8267 [USACO22OPEN] Counting Liars B & U208878 晴天
    其实,这个题,只需要最简单的枚举,加上最简单的二分查找即可~\(1\leN\le1000\)?枚举吧~咋枚举?显然,最好状态下Bessie的位置一定是某个\(p_i\),否则差一个就会导致有个奶牛要说谎。所以我们枚举(理论来讲要先去个重,这样快一点,不过貌似数据没有重的~)\(p_i\),每次遍历这帮奶牛看看有......
  • 挑战程序设计竞赛 2.1章习题 poj 3046 Ant Counting
    https://vjudge.net.cn/problem/POJ-3046#author=GPT_zh有一天,贝西在蚂蚁山里探头探脑,看着蚂蚁们来来回回地觅食。她发现很多蚂蚁都是兄弟姐妹,彼此无法区分。她还发现,有时只有一只蚂蚁去觅食,有时几只,有时全部。这就产生了大量不同组合的蚂蚁!有点数学天赋的贝茜开始琢磨起来......
  • [USACO10OCT] Lake Counting S
    传送锚点:https://www.luogu.com.cn/problem/P1596由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个\(N\timesM(1\leqN\leq100,1\leqM\leq100)\)的网格图表示。每个网格中有水(W)或是旱地(.)。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约......
  • CF1884D Counting Rhyme 题解
    题目链接:CF或者洛谷给个莫反题解,讲讲常规套路题目要求满足没有\(a_k\mida_i与a_k\mida_j\)的\((i,j)\)的对数,显然即不存在\(a_k\mid\gcd(a_i,a_j)\)。稍微拓展下,如果不存在整除多个数,那么显然不整除它们的\(\gcd\)即可,因为它们的公因数即为满足的最大数,如果为......
  • C. Permutation Counting
    原题链接题解给定一个数组,你知道怎么计算最终答案吗?设数组大小为\(n\),数组中的最小值为\(x\),大于最小值的个数为\(p\)则\(ans=n*x-(n-1)+p\),\(p\in[0,n-1]\)所以\(x\)越大,\(ans\)越大二分的前置条件有了二分\(x\)遍历数组判断\(k\)能否达到这个\(x\)code#i......
  • 探讨:ARC(Automatic Reference Counting)与手动内存管理的区别及工作原理
    在iOS和macOS开发中,内存管理是一个至关重要的话题。在过去,手动内存管理是一项繁琐且容易出错的任务,而引入了ARC(AutomaticReferenceCounting,自动引用计数)之后,内存管理变得更加简单和安全。本文将详细讨论ARC和手动内存管理之间的区别,并解释ARC的工作原理。1.ARC与手......
  • AGC005D ~K Perm Counting
    Statement:若一个有\(n\)个元素的排列\(P\)满足对于任意\(i(1\len\len)\)都有\(|P_i-i|\nek\),则这个排列是合法的。现给定\(n,k\),问有多少个合法的排列。Solution:神仙题啊。考虑容斥。钦定有\(i\)个位置不满足条件,即满足\(|P_i-i|=k\)。这里有一步......
  • qoj1138 Counting Mushrooms
    交互题。有一个隐藏的01序列\(a\),你只知道\(a\)的长度,并记为\(n\)。保证\(a_1=0\)。你可以执行以下操作:询问一个序列\(b\),满足两两不同且长度在\([2,1000]\)之间。交互库会返回\(\sum[a(b_i)\not=a(b_{i+1})]\)。请在\(226\)次操作内求出\(a\)中\(0\)......
  • Codeforces 954H Path Counting
    令输入的为\(a'\),同时\(a'_0=1\)。对其做一个前缀积\(a_i=\prod\limits_{i=0}^ia'_i\),对于\(i\gen\),认为\(a_i=0\)。那么\(a_i\)就相当于是深度\(i+1\)的点的个数。同时也可以得到根的深度为\(l\)时子树内深度为\(r\)的深度的点数为\(\dfrac{a_{r-......