首页 > 其他分享 >数列分段 III

数列分段 III

时间:2023-06-17 14:33:36浏览次数:37  
标签:连通 数列 前缀 sum 区间 III 转移 分段

太菜了,只会打暴力。

首先考虑二分答案。

我们发现,有一个结论:如果每段和都小于 \(mid\),那么可行划分的段数构成的集合 \(S\) 一定是一段区间。

接下来证明。

严谨证明太难写了,下面是半成品,没写完。

说人话,就是归纳。假设前 \(i - 1\) 个前缀满足,说明第 \(i\) 个前缀也满足。

我们把并起来还是区间的两个区间连一条边,只要能转移的 \(j\) 都在一个连通块就一定是区间。

显然一个区间能转移到的区间都和它连通。

然后把能转移的 \(j\) 分为 \(sum_j < sum_i\) 和 \(sum_j \ge sum_i\) 的。

能转移到后者的都能转移到 \(i\),而且后者一定和某一个 \(sum\) 比它小的连边,说明后者一定和某一个前者连通。

接下来需要说明前者之间连通,对于 \(k < j\),显然 \(k\) 能转移到 \(j\)。

标签:连通,数列,前缀,sum,区间,III,转移,分段
From: https://www.cnblogs.com/Mysterious-Cat/p/17487459.html

相关文章

  • 数列分段 Section I
    数列分段SectionI题目描述对于给定的一个长度为\(N\)的正整数数列\(A_i\),现要将其分成连续的若干段,并且每段和不超过\(M\)(可以等于\(M\)),问最少能将其分成多少段使得满足要求。输入格式第1行包含两个正整数\(N,M\),表示了数列\(A_i\)的长度与每段和的最大值,第\(2\)行......
  • 图解LeetCode——437. 路径总和 III
    一、题目给定一个二叉树的根节点root ,和一个整数targetSum,求该二叉树里节点值之和等于targetSum的路径的数目。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二、示例2.1>示例1:【输入】root=[10,5,-3,3,2,null......
  • 外观数列
    外观数列题目:给定一个正整数n,输出外观数列的第n项。「外观数列」是一个整数序列,从数字1开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1)=“1”countAndSay(n)是对countAndSay(n-1)的描述,然后转换成另一个数字......
  • [SDOI2008] 递归数列
    题面一个由自然数组成的数列按下式定义:对于\(i\lek\):\(a_{i}=b_{i}\)。对于\(i>k\):\(\displaystylea_{i}=\sum_{j=1}^{k}{c_{j}\timesa_{i-j}}\)。其中\(b_{1\dotsk}\)和\(c_{1\dotsk}\)是给定的自然数。写一个程序,给定自然数\(m\len\),计算\(\left(\su......
  • 代码随想录算法训练营第25天 | ● 216.组合总和III ● 17.电话号码的字母组合 - 第7章
     第七章 回溯算法part02 今日内容:  ●  216.组合总和III●  17.电话号码的字母组合  详细布置   216.组合总和III  如果把 组合问题理解了,本题就容易一些了。  题目链接/文章讲解:https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%B......
  • 算法题:求解斐波那契数列
    概念:斐波那契数列是指以0,1开始,之后每一项都等于前两项之和的数列,即:0,1,1,2,3,5,8,13,21,34,55,89,144……以此类推。这个数列最早是由13世纪意大利数学家斐波那契提出的,并在数学、自然科学和计算机科学等领域有着广泛的应用。题目:若有一只兔子,它每个月生一只小兔子,而小兔子......
  • HDU 3277 Marriage Match III(并查集+二分+最大流)
    题意:和HDU3081一样的题意,只不过多了一个条件,每个女孩除了能选自己喜欢的男生之外,还能选不超过K个自己不喜欢的男生,问游戏最多能进行几轮思路:除了选喜欢的,还能选任意K个不喜欢的,怎么建图呢?一开始我想每个女孩连喜欢的男孩,而且选K个不喜欢的男孩也连边,可是这K个要怎么确定呢?这种显然......
  • 等差数列
    题目:/***等差数列:*求等差数列前N项的级数之和。不考虑不合理的输入等特殊情况*输入N,首项M,差值K,整型,空格分隔。*/解答:classTest93{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);//codehere......
  • Luogu P1939 【模板】矩阵加速(数列)
    【模板】矩阵加速(数列)题目描述已知一个数列\(a\),它满足:\[a_x=\begin{cases}1&x\in\{1,2,3\}\\a_{x-1}+a_{x-3}&x\geq4\end{cases}\]求\(a\)数列的第\(n\)项对\(10^9+7\)取余的值。输入格式第一行一个整数\(T\),表示询问个数。以下\(T\)行,每行一个正......
  • 计算斐波那契数列的前 N 项
    它使用C++11中的多线程库thread来并行计算斐波那契数列的前N项:#include<iostream>#include<thread>#include<vector>voidfib(std::vector<int>&fib,intstart,intend){for(inti=start+2;i<end;i++){fib[i]=fib[i-1]+......