首页 > TAG信息列表 > 区间
2022-09-16 区间反转向上,是以收敛三角形的形式,三角形底在区间上边缘,形成的突破向上。
案例一: 1. 首先感受的是多空力量,绿箭头的一笔上涨,其实无力,但是注意是这一笔没有任何向下的意思。所以考虑看多,但是无法直接突破 2. 第二个绿箭头是第二天开盘,直接跳空低开,这里我们要做多 3. 到前期高点之后,因为是区间顶部,所以我们考虑开始做空 4.注意了,这里空单没有打到区间下部,说[AcWing 785] 快速排序
第一篇博客诶!!! 点击查看代码 #include<iostream> using namespace std; const int N = 100010; int n; int q[N]; void quick_sort(int q[], int l, int r){ if(l >= r) return; //只有一个数或者没有数时则不用去遍历了 //int x = q[l]; //会超时 有两组数据CF1327F AND Segments
CF1327F AND Segments 洛谷:CF1327F AND Segments CF:CF1327F AND Segments Solution 原问题可以拆位分成 \(k\) 个子问题,答案为每个问题的方案数之积。 这些子问题均为:给定 \(m\) 个区间,要求这些区间的与值为 \(0\) 或 \(1\)。 区间赋值用差分解决。 对于限制为 \(1\) 的区间,其中的区间交集
题目链接:区间交集 分析: 贪心 先将每个区间按左端点从小到大排序,同时用小根堆来维护区间右端点 对于若干区间的交集的长度为这些区间的右端点的最小值 - 这些区间的左端点的最大值 代码实现 #include <bits/extc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using namD K匹配 kmp 区间匹配计算贡献
链接:https://ac.nowcoder.com/acm/problem/213329来源:牛客网 题目描述 牛牛是赫赫有名的字符串高手,现在牛牛发现了一种新的匹配方式。给定一个字符串SSS和一个字符串TTT,如果SSS存在一个长度为kkk的子串Sl1,l1+k−1S_{l_1, l_1 + k - 1}Sl1,l1+kNOIP复习(三)线段树
普通线段树 我的线段树 \(debug\)(记录一下做题时犯的错误): 检查 \(build\) 函数是否调用。\(\to segmentation~fault\) 区间操作 \(ql\) 是否有可能大于 \(qr\to segmentation~fault\)。 结构体中元素初值问题(是否赋初值,懒标记初值是否与题目操作冲突)\(\to\) 输出可能变得极大 动P6020 [Ynoi2010] Exponential tree 解题报告
P6020 [Ynoi2010] Exponential tree 解题报告: 更好的阅读体验 感觉还是水平不太行,写的很感性。 题意 给定 \(n,k\),构造矩阵满足: \(a_{i,i}=a_{i,i+1}=1\); 对于 \(i>j\),\(a_{i,j}=0\); 若 \(j>i+1\) 且 \(a_{i,j}=1\),则存在 \(i<t<j\) 满足 \(a_{i,t}=a_{t,j}=1\); 矩阵 \(A^k\) 需线段树上状压(位运算)
洛谷P1558 分析: 颜色类型只有 \(30\) 种,可以利用二进制进行状压。 线段树维护一个二进制数表示区间的颜色为哪一种,将这个区间的颜色进行状压,每一种颜色对应二进制数的某一位。合并区间时将两个子节点的数按位或即可,题目区间修改为直接覆盖,统计答案时只需统计对应区间的数有多少个CF1718D 题解
设 \(k\) 为 \(a\) 中的空位数量。 首先咱们转化这个“相似”的条件,发现它其实是说,笛卡尔树的结构相同。 那么我们把p建笛卡尔树然后把a的数往上填。如果此时有上面小于下面就挂了(挂了:即每个询问答案都是NO) 然后对于中间的空,它需要 \(>\) 下面的最大值,并且 \(<\) 上面的最小值。可持久化线段树
现想现写的,没有借鉴别人的任何东西。 可持久化线段树1 考虑不会变得太多,每次该值操作只会改变一个位置的值,其它位置是可以继承的。如果用数组,那就是下标继承。如果把数组分成 \(2\) 半,那改一个值,就一半继承,另一半重新赋值。而用线段树,就可以做到区间继承 \(\log\) 的时间复杂度。动态规划题目选解(二)
上一个写太长导致 typora 卡爆了,只好新开一个。。 动态规划题目选解(一) CF730J Bottles Present 4 首先 \(k\) 很好算出来:记 \(\sum a_i=\text{sum}\),从大到小贪心选到 \(\sum b_i\ge \text{sum}\) 即可。 考虑 \(t\) 怎么算:如果我们选出的这 \(k\) 个瓶子内的水量分别为 \(x_1,x_环形石子合并
环形石子合并 将 $n$ 堆石子绕圆形操场排放,现要将石子有序地合并成一堆。 规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分。 请编写一个程序,读入堆数 $n$ 及每堆的石子数,并进行如下计算: 选择一种合并石子的方案,使得做 $n−1$ 次合并得分总和最大区间 kth
众所周知,区间 kth 有很多种求法。 本文中的时间复杂度和分数均以实现 P3834 为准。 为了更好地贴合现实,本文代码将更加符合学此算法时的实际情况。 一、排序 通过选择 / 冒泡 / 插入排序,将区间排序后输出 k 小值。 时间复杂度 \(O(mn^2)\) 实际得分:50 分 用时:7.81s #include<cstdiac802 区间和
注意 >> 的运算顺序在加减之后 #include<bits/stdc++.h> using namespace std; const int N = 300010;// int n, m; int a[N];//坐标插入的值 int s[N];//a数组的前缀和 vector<int> alls;//所有查询和和插入的坐标 vector<pair<int, int>> add,SP1557 GSS2 - Can you answer these queries II
SP1557 GSS2 - Can you answer these queries II 题目大意 给出 \(n\) 个数,\(q\) 次询问,求最大子段和,相同的数只算一次。 分析 看到一个区间内相同的数只能算一次,经验告诉我们要考虑离线。 我们将区间按照右端点排序,用pre[i]来表示i上次出现的位置。 接下来,我们来考虑线段树需要维题解 AT5635 Shortest Path on a Line(线段树优化建图)
题解 AT5635 Shortest Path on a Line Description 题目传送门 题面翻译 有一张有 \(N\) 个点,编号为 \(1 - N\) 的无向图。 做 \(M\) 次操作,每次操作给出三个正整数 \(L,R,C\),对于每对 \(≥L\) 且 \(≤R\) 的整数对 \((S,T)\) ,在 \((S,T)\) 之间添加一条长度为 \(C\) 的边 完成操CF992E Nastya and King-Shamans
CF992E Nastya and King-Shamans 题目大意 给定一个序列 \(a_i\) ,记其前缀和序列为 \(s_i\) ,有 \(q\) 个询问,每次单点修改,询问是否存在一个 \(i\) 满足 \(a_i=s_{i-1}\) ,有多解输出任意一个,无解输出 \(-1\) 。 分析 这里,以一贯的习惯,提供一下我整个的思维过程,希望有些启示作用。248G
P3146 [USACO16OPEN]248 G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这题的dp是i到j全部合并的最大结果,所以dp[1][n]并不是最终结果 n^3区间递归,在子区间左边和右边相等时可以更新dp值,但要注意不能是0,(如果是0代表这两个小区间之前更本就没有更新过,也就是无法合并,那么这时候[算法]区间归并
问题分析 有的时候,会遇到给定一系列的区间,求交集or并集,或者合并的题. 这些题的解题方式比较通用个,做一个总结. 会用到集合和归并排序的相关知识. 两个区间的关系有六种,如果我们首先对区间按照区间左边界进行排序,那么就会编程3中关系: A 包含 B ==> A[0] <= B[0] && A[1] >一元三次方程
根的绝对值>=1,可知在区间[i,i+1]内最多只有一个解。将(-100,100)for 循环分成若干区间令l=i,r=i+1;判断f(l)是否为0,再判断f(r)是否为0,如果为0,直接跳过。当左右点都不为0时走到下一步利用二分,判断。 当f(mid)*(r)>0 那么可知根一定在左边区间 即r=mid,否则的话,l=mid;[NOIP2001 提高组] 一元三次方程求解
题目链接:https://www.luogu.com.cn/problem/P1024 试题分析: 三个答案都在[-100,100]范围内,两个根的差的绝对值>=1,保证了每一个大小为1的区间里至多有1个解,也就是说当区间的两个端点的函数值异号时区间内一定有一个解,同号时一定没有解。那么我们可以枚举互相不重叠的每一个长度为1cf1718 B Fibonacci Strings
solution 当ai为Fib数的时候,他一定在串中是全部连续的,不然就g,因为把他分解成小的Fib数必定连续。 一个数字不能拆成两个连续的fib数。 \(f_i=\sum_{j=1}^{i-2}f_j+1\) 考虑最大的ai出现的区间。 f[x] f[x+1] f[x+2] 显然当(f[x+1],f[x+2])区间中有三个以上的ai就嘎了,tot都没他大 有Maximum Segment Sum After Removals
Maximum Segment Sum After Removals You are given two 0-indexed integer arrays $nums$ and $removeQueries$, both of length $n$. For the $i^{th}$ query, the element in $nums$ at the index $removeQueries[i]$ is removed, splitting $nums$ into different segment56. 合并区间
56. 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:intervals = [[1,3],[2,6],[8,10],[15,18]] 输出:[[1,6],[8,10]整体二分学习笔记
# 整体二分 本文代码见[这](https://oi-wiki.org/misc/parallel-binsearch "这")。 二分,精髓就在于一个"猜测"。猜测答案是否小于 $mid$ 、是否等于 $mid$ 。 先想一个简单的问题:一次查询全序列中排名为 $k$ 的数。 排名的定义是:小于一个数的数的个数+1。 当然可以排序然后输出。