- 2024-11-21浅谈线段树
1前言线段树一直是高频考点,可以直接出也可以作为数据结构优化其他算法。这里我只想说说线段树的基本理解以及如何构造,也就是如何写出信息和标记,信息之间的合并,标记之间的复合,信息和标记之间的复合。以及矩阵的辅助理解,区间最值、历史版本相关问题。2线段树线段树运用了分治的
- 2024-11-20滑动窗口最大值——栈与队列
第一版代码:classSolution{private:classMyQueue{//单调队列(从大到小)public:deque<int>que;//使用deque来实现单调队列//每次弹出的时候,比较当前要弹出的数值是否等于队列出口元素的数值,如果相等则弹出。//同时pop之前判断队列当
- 2024-11-15Medium Design
问题描述给\(n\)个区间,你可以任意选择给出区间的一部分,换句话说,你可以任意选择一个给出区间的所有子集(包括空集),然后你要进行以下的操作:对于选择的区间,我们要进行整体加操作,即如果你选择了\([l_i,r_i]\),那么对于所有的\(a_j,j∈[l_i,r_i]\)都要加\(1
- 2024-11-13洛谷P1182 数列分段 Section II
洛谷P1182数列分段SectionIIP1182数列分段SectionII数列分段SectionII题目描述对于给定的一个长度为的正整数数列,现要将其分成()段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列要分成段。将其如下分段:第一段和为,第段和为,第段和为,和
- 2024-11-13luogo P1182 数据分段
数列分段SectionII题目描述对于给定的一个长度为N的正整数数列A1~N,现要将其分成M(M<=N)段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列42451要分成3段。将其如下分段:[42][45][1]第一段和为6,第2段和为9,第3段和为1,和最大值为9。
- 2024-11-13数列分段(二分)
[数列分段SectionII]题目描述对于给定的一个长度为\(N\)的正整数数列\(A_{1\simN}\),现要将其分成\(M\)(\(M\leqN\))段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列\(4\2\4\5\1\)要分成\(3\)段。将其如下分段:\[[4\2][4\5][1]\]第一段和为
- 2024-11-11差分约束的一些理解
一般的转化不等式+建图+判断负环不加赘述图是否连通如果图不连通,那么证明约束条件并不能全部约束有两种办法解决这个问题建超级源点将每个点作为起点跑求dis的最大值/最小值对于Intervals最后考虑求\(dis\)的最大值对于LayoutG,和Capitalism最后要
- 2024-11-11滑动窗口最大值
滑动窗口最大值题目给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例示例1:输入:nums=[1,3,-1,-3,5,3,6,7],k=3输出:[3,3,5,5,6
- 2024-11-11容斥
P3813[FJOI2017]矩阵填数常见思路:最大值为\(v\)方案数\(=\)最大值\(\lev\)的方案数\(-\)最大值\(<v\)的方案数但是在这里有多个矩形,直接做会有问题,因为非法方案应该是存在一个矩形最大值\(<v\),看\(n\)的范围想到容斥上公式:\(\displaystylef(S)=\sum_{T\subsetS}(-1)^{|S|-|
- 2024-11-09PTA||7-2 求最大值及其下标(第九周)
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。输入格式:输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。输出格式:在一行中输出最大值及最大值的最小下标,中间用一个空格分开。输入样例:628101910输出样例:10
- 2024-11-0811.8模拟赛总结
赛时T1想如果某一行和某一列的最大值相同的话,这个数的位置就可以确定了,但如果一个数只作为某一行的最大值出现了一次,那它所在的列就一定有一个比它大的,所以考虑从大到小往矩形里放数,记录有几列已经放过数字了,那这个数就可以在这几列中任选一列,即\(ans\)乘上放过数的列的个数,赛
- 2024-11-07NOIP 模拟 4
T1玩游戏神秘贪心。先拆成两个序列\(a,b\),需要保证时刻有前缀和\(sum_i+sum_j\le0\),首先两边贡献如果能为非正数,先看能否往两边跳,如果都跳不了无解,其实就是贪心地跳到前缀和比当前小的地方。跳到贡献为正数时,来到了两个序列前缀和的最低点,考虑从两边往中间跳每次也是往低跳,
- 2024-11-06P10833 [COTS 2023] 下 Niz
题目链接主要算法分治(最大值分治),st表思路1.因为我们考虑最主要的限制条件是最大值和排列,所以如果我们知道最大值就知道答案的长度。所以考虑按最大值分治,统计左边对右边的贡献。2.接下来就是如何快速考虑一个区间是否合法,一个显然的是没有相同数,所以可以记前一个数的位置的最
- 2024-11-06Leetcode刷题Python之3254.长度为K的子数组的能量值I
提示:关于数组子问题的挑战,涉及能量值的计算。文章目录一、问题描述示例二、解题思路三、代码实现1.引入库2.代码解释总结一、问题描述给定一个长度为n的整数数组nums和一个正整数k,我们需要计算每个长度为k的子数组的能量值。能量值的定义如下:如果子数
- 2024-11-04【CF1988F Heartbeat】--很厉害的拆式子题qwq
常用DP技巧前\(i-1\)个到前\(i\)个,在末尾加入(钦定了相对顺序)以一个分界线(一般为最值),将序列分开,然后插入(一般为最值),两个子段互比计数DP拆式子:有共同变量的不必每次枚举,提出来预处理,优化时间复杂度思路看到前缀最大值\(\to\)将最大值提出来\(\to\)左侧只有
- 2024-11-042024.11.4 test
B你可以进行以下的操作:选择一个点染白色;此后每次染有白色点相邻的,且\(a_i\)最小的点。\(q\)次询问每次给出\(p,k\),问有多少种选择点的方案,使得\(p\)是第\(k\)个选到的。\(a_i\)是排列。\(n,q\le1e5\)。设\(l=p-k+1,r=p+k-1\),若\([l,p-1]\)能取到且\(a_p<a_{l-1}
- 2024-11-03JOI Open 2019 Triple Jump 题解
原题链接可以暴力枚举\(a,b\),然后\(c\in[2b-a,n]\),找区间最大值即可。对于我们选择的\(a,b\)间,若能在\((a,b)\)中找到某个下标\(i\),满足\(h_i\geh_a\)或\(h_i\geh_b\),那么选择\(i\)是更优的。理由很简单,无论是从\(a\toi\)还是从\(b\toi\),都会扩大\(c\)的
- 2024-11-03C 语言标准库 - <limit.h>
简介<limits.h> 是C标准库中的一个头文件,定义了各种数据类型的限制。这些宏提供了有关整数类型(char、short、int、long 和 longlong 等)和其他数据类型的最大值和最小值的信息。这些限制指定了变量不能存储任何超出这些限制的值,例如一个无符号可以存储的最大值是255。
- 2024-11-02滑动窗口最大值
滑动窗口最大值题目链接:LeetCode239描述给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例输入:nums=[1,3,-1,-3,5,3,6,7],k=3
- 2024-11-02数据结构好题
7574--【6.05模拟】数据结构分块二次离线回滚莫队cdq分治+扫描线题目限制太多,考虑先消去\(y\)的限制,很容易想到将点分成\(y\lemid\)和\(y>mid\)两部分,此时上下两部分可以分开统计最大值但是如果直接将询问扔进去又会变成\(O(nQlogn)\)的,考虑这个过程能否优化重要性质:Red
- 2024-11-02CF1848B Vika and the Bridge
思路:注意看,只有一次改变颜色,不要再苦苦打二分了!贪心地去求答案,对于每一种颜色记录两个点之间的距离的最大值和次大值,然后把最大值的那段区间的中点颜色更改成当前颜色。令最大值为maxx,次大值为max2。则min(⌊maxx/2⌋,max2) 即为最优解。记得处理到n+1 号点的距
- 2024-10-30C++算法练习-day26——239.滑动窗口的最大值
题目来源:.-力扣(LeetCode)题目思路分析题目:给定一个整数数组 nums 和一个整数 k,请找出该数组中所有长度为 k 的子数组中的最大元素,并返回这些最大元素组成的数组。思路:滑动窗口:这是一个典型的滑动窗口问题,其中窗口的大小为 k。我们需要遍历整个数组,同时保持一