线段 例题

一则求总贡献的例题——联考题引发的思考

对于一些求总贡献的题,与许多人的常识相反,直接求期望往往比求总和更容易. 以今天联考 T1 的一个环节为例. 【例】对排列 \(P_n\),定义 \(C(P_n):=\left|\{i:P_j>P_i,\ \forall j<i\}\right|\),即其前缀最小值序列的不同数个数. 给定 \(n\ ......
例题 贡献

向量点乘判断点是否在线段上

几种要考虑的情况 1) 点p和线段断点a, b重叠,pa•ab=pa.x*pa.y+ab.x*ab.y=0 2) pa, pb共线,则pa×pb=0 2-1) p在线段ab上,此时pa, pb的夹角为180度,cos(180)=-1,pa•ab=-|pa|*|ab| 2-2) p在线段ab外,此时p ......
线段 向量

【每日例题】蓝桥杯 c++ 串的处理

串的处理 题目 题目描述在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下: 1.把每个单词的首字母变为大写。 2.把数字与字母之间用下划线字符(_)分开,使得更清晰 3.把单词中间有多个空格的调整为1个空格。输入描述 用户输入的串中只有小写 ......
蓝桥 例题

【每日例题】蓝桥杯 c++ 最大降雨量

最大降雨量 题目 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。这个法术需要用到他手中的49张法术符,上面分别写着1至49这49个数字。法术—共持续7周,每天小明都要使用—张法术符,法术符不能重复使用。每周,小明 ......
降雨量 蓝桥 例题

【每日例题】蓝桥杯 c++ 最小的或运算

最小的或运算 题目 问题描述给定整数a,b,求最小的整数工,满足a|a = ba,其中|表示或运算。输入格式第—行包含2个正整数a,b.输出格式输出共1行,包含1个整数,表示最终答案。样例输入样例输出评测数据规模对于所有测评数据,0<a,b <264. 最小的或运算 思路分析 1.要求最小的x满足a ......
蓝桥 例题

【每日例题】蓝桥杯 c++ 奖学金

奖学金 题目 蓝桥杯 奖学金 题目分析 由题目可知,该题涉及到五个属性:学号,语文分数,数学分数,英语分数,总分;由于我们需要通过输入语文、数学、英语分数,经过操作后,输出学号与总分,所以我们可以通过结构体进行存储。 下面是有关结构体的信息:结构体信息 2.下面是排序优先级的要求: 先按总分从高到低 ......
蓝桥 例题 奖学金

点是否在线段上

几种要考虑的情况 1) 点p和线段断点a, b重叠 2) pa, pb共线, p在线段ab上 3) pa, pb共线, p在线段ab外 4) pa, pb不共线 //点是否在线段上 public static bool IsPointOnSegment(Vector2 p, Vector2 a, V ......
线段

点到线段的距离2

几种要考虑的情况 1) 点和线段两端重叠的情况 2) 点在线段两侧的情况 p在另一侧的情况以此类推 3) 点在线段中间的情况 //点到线段的距离 public static float PointToSegmentDistance2(Vector2 p, Vector2 a, Vector2 b) ......
线段 点到

树状数组用线段树来写

#include<bits/stdc++.h>#define int long longusing namespace std;const int N=5e5+10;int a[N],tag[N<<2];struct{ struct{ int l,r,sum; }tr[N<<2]; void pus ......
线段 数组

【数据结构】线段树解决历史问题

无区间最值操作 这里讲两种简易方法: 1.矩阵 考虑线段树的 \(tag\) 必须要有结合律,几个值互相更新,考虑矩阵乘法去实现这个操作。 例题 支持区间加,查询区间和,区间历史版本和。 考虑记一个点的状态为: \[\begin{bmatrix} his\\ sum\\ len \end{bmatr ......
线段 数据结构 结构 数据 问题

算法学习笔记(33): 矩阵乘法与线段树标记

矩阵乘法与线段树标记 让我们回归本质,将一切线性操作归为矩阵。 目录矩阵乘法与线段树标记线段树区间加线段树历史版本和线段树历史版本最大/最小值线段树区间取 \(\min\) 与历史版本最大NOIP2022 比赛优化标记常数关于向量构造的一些小技巧作者有话说 线段树的懒标记是非常普遍且巧妙的,但是对于 ......
线段 乘法 矩阵 算法 标记

P2251 质量检测(分块线段树RMQ单调队列)

P2251 质量检测 正解应该是ST表和单调队列,不过对于这道题来说只有查询没有修改,这里我还是想用线段树和分块来写,不得不说分块是真好,优雅的暴力 线段树版本: #include <bits/stdc++.h> #define LL long long using namespace std; c ......
线段 队列 质量检测 质量 P2251

线段与圆是否相交

一个点在圆内 两个点都在圆内 两个点都在圆外 public static bool IsSegmentCircleIntersect(Vector2 p1, Vector2 p2, Vector2 center, float r) { float sqrR = r * r; //1) 一个点在圆内, ......
线段

点是否在线段两侧

不在两侧时 在两侧时 //点是否在线段两侧 public static bool IsPointSideOfLine(Vector2 p, Vector2 a, Vector2 b) { var ap = p - a; var ab = b - a; if (Vector2.Dot(ap, ab) ......
线段

F. Unique Occurrences(线段树分治+可撤销并查集)

F. Unique Occurrences 假如我们删除所有权值为x的边,那么所有权值为x的边对答案的贡献就是 \(\sum sz[u]*sz[v]\) sz表示两个联通块的大小,且(u,v)的边权为x 我们可以用可撤销并查集来进行处理,简单来说就是将一条边的存在时间看作区间,然后挂到线段树上,然后 ......
线段 Occurrences Unique

线段树专题

线段树专题 (该笔记持续更新中...) 一、基本操作 1.单点修改/查询: 2.区间修改/查询: 需要用到 lazy_tag 技术,即每次修改不会立刻修改涉及到的每一段区间,而是等到下一次修改要用到或者是要查询该区间时再更新,这样可以将每次修改和查询的复杂度控制在 \(O(log_2N)\) 3.总 ......
线段 专题

线段树二分

修改操作可以很简单的在线段树上打标记即可。 常规做法直接二分 R 然后区间查询 gcd,复杂度是仨log。 upded:其实也是俩log,线段树查询区间gcd是单 log。 注意到你会将区间拆分成 log 个子区间,直接查询他们的 gcd 即可,直接查询为什么不会多乘个 log 呢。 注意到对两个数 ......
线段

第 116 场双周赛(双指针,背包问题,线段树+lz标记)

本题为双指针和贪心。当我们遇到奇数个0或1时,直接将下一位改变即可。 class Solution { public: int minChanges(string s) { int n = s.size(); int res = 0; int l = 0, r = -1; while(r ++ < ......
线段 指针 背包 标记 问题

【每日例题】蓝桥杯 C语言 凯撒加密

凯撒加密 题目 题目描述给定一个单词,请使用凯撒密码将这个单词加密。凯撒密码是—种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即α变为d, b变为e,·,w变为z,Z变为a,g变为b,z变为c。输入描述输入格式:输入一行,包含一个单词,单词中只包含小写英文字母,单词中的亨 ......
蓝桥 例题 语言

Switch case:例题

include using namespace std; int main(){ int a[101],max=0,n=0,b; for(int i=0;i<=4;i++){ cin>>a[i]; } cin>>n; switch(n){ case 1: for(int i=0;i<5;i++){ ......
例题 Switch case

10.28/例题2

#include <bits/stdc++.h>using namespace std;int a[6],n,sum=0,p,t;void one(){ for(int i=0;i<5;i++){ for(int j=0;j<5-i;j++){ if(a[j]<a[j+1]){ t=a[j]; a[ ......
例题 10.28 10 28

2021 CCPC桂林 B.A Plus B Problem (线段树)

传送门 线段树大模拟!。考验线段树功底的时候来了,作为队伍的史山选手,写这么史也是情有可原的。 #include <bits/stdc++.h> using ll = long long; const int INF = 0x3f3f3f3f; const int N = 1e6 + 10; typ ......
线段 Problem 2021 CCPC Plus

【每日例题】蓝桥杯 c++ 运动会

运动会 题目 问题描述n个运动员参加一个由m项运动组成的运动会,要求每个运动员参加每个项目。每个运动员在每个项目都有一个成绩,成绩越大排名越靠前。每个项目,不同运功员的成绩不会相同,因此排名不会相同。(但是不同项目可能成绩会相同)每个项目的前k名分别获得k到1分,第主名获得max(k+1一i,0)分 ......
蓝桥 例题 运动会

关于线段树区间最值问题的复杂度证明

定义函数 \(\Phi(T)\) 为当前树 \(T\) 中不同数的数量,易证明上限为 \(|T|\)。并规定整棵线段树的大小 \(= n\)。 我们再定义一个概念:对于一个线段树节点,如果它对应的区间包含于 \(\min\) 操作的区间 \([l, r]\),且它的祖先不包含于 \([l, r]\) ......
复杂度 线段 区间 问题

李超线段树

P4097 【模板】李超线段树 / [HEOI2013] Segment 强制在线,那么这种问题该如何解决? 我们可以把任务转化为维护如下操作: 加入一个一次函数 给定 \(k\),求定义域包含 \(k\) 的所有一次函数中,在 \(k\) 处取值最大的那个,如果有多个函数取值相同,选编号最小的。 ......
线段

可持久化线段树学习笔记

主席树的定义 主席树,也称可持久化线段树,什么是可持久化线段树呢,即为一颗记录了所有更新过程的线段树。能够处理出从第 $i$ 次更新到第 $j$ 次更新的线段树变化。 前置知识 值域线段树 值域线段树的区间存的并不是节点信息,而是在值在某一范围内的数的个数。 如图就是一棵值域线段树。 1号节点存储的 ......
线段 笔记

【每日例题】蓝桥杯 c++ 清理水域

清理水域 题目 问题描述小蓝有一个n ×m大小的矩形水域,小蓝将这个水域划分为n行m列,行数从1到n标号,列数从1到m标号。每行和每列的宽度都是单位1。现在,这个水域长满了水草,小蓝要清理水草。每次,小蓝可以清理—块矩形的区域,从第r1行(含)到第r2行(含)的第c1列(含)到c2列(含)。经过—段 ......
蓝桥 例题 水域

P5537 【XR-3】系统设计 题解-哈希+线段树二分

20231026 P5537 【XR-3】系统设计 题解-哈希+线段树二分 这个东西怎么会和哈希有关?!直接寄。 Statement 这个系统首先需要输入一棵 \(n\) 个点的有根树和一个长度为 \(m\) 的序列 \(a\),接下来需要实现 \(q\) 个操作。 操作分两种: 1 x l r 表 ......
线段 题解 系统 P5537 5537

P3870 [TJOI2009] 开关(线段树)

P3870 [TJOI2009] 开关 思路:可以用线段树来维护区间中亮灯的个数,区间修改用加上懒标记就好 #include <bits/stdc++.h> #define LL long long using namespace std; const int N = 1e5 + 10; struc ......
线段 P3870 3870 2009 TJOI

splay + 垃圾回收 知识点与例题的简要讲解

splay 简要讲解 前置芝士:普通二叉树 splay tree是一个越处理越灵活的数据结构,通过splay(伸展)操作,使整棵树的单次查询时间复杂度接近于O(log n),整棵树的高度也接近于log n 根据上面的这句话,很明显能看出splay与普通二叉树的区别 普通二叉树经过多次处理后,很容易退 ......
例题 知识点 简要 垃圾 知识