线段459579152 zhuanlan atcoder

点到线段的距离2

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

AtCoder Beginner Contest 224 H Security Camera 2

洛谷传送门 AtCoder 传送门 直接糊一手线性规划对偶板板。 要求: \[\min \sum A_i l_i + \sum B_i r_i \]\[\forall i, j, l_i + r_j \ge C_{i, j} \]\[l_i, r_i \ge 0 \]\[l_i, r_i \in \ ......
Beginner Security AtCoder Contest Camera

树状数组用线段树来写

#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) ......
线段

AtCoder Beginner Contest(abc) 314

B - Roulette 难度: ⭐ 题目大意 有一个猜数字的游戏, 有n个人参加, 每人都猜了若干个数; 最后给出答案数字; 在所有猜中数字的人中输出猜数数量最少的人的编号;(可能不止一个); 解题思路 数据不大, 暴力即可; 神秘代码 #include<bits/stdc++.h> #defin ......
Beginner AtCoder Contest 314 abc

AtCoder Beginner Contest(abc) 313

B - Who is Saikyo? 难度: ⭐ 题目大意 选择有n个人, 给出m个强弱关系, 例如a比b强, 这种强弱关系是可以传递的, 如果b比c强, 那么a就b强; 请问这n个人中最强的是谁, 如果根据给出的强弱关系无法确定最强者, 那么就输出-1; 解题思路 我们可以用建树的思想找入度即可, ......
Beginner AtCoder Contest 313 abc

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

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

AtCoder Beginner Contest 326 F

F - Robot Rotation 一句话不开LL,见祖宗 感谢大佬,和洛谷上的题解 上面已经将的很清楚了,但是如果你跟我一样一开始看不懂他们的代码,那么这篇可能为你解惑 点击查看代码 #include <bits/stdc++.h> using namespace std; #define LL ......
Beginner AtCoder Contest 326

AtCoder Beginner Contest(abc) 312

B - TaK Code 难度: ⭐ 题目大意 题目定义一种矩阵X: 该矩阵的是一个长度为9的由黑白色块组成正方形矩阵; 该矩阵的左上角和右下角都是一个3*3的黑色矩阵(总共18个), 这两个黑色矩阵外面(边缘不算)包围一圈白色色块(总共14个); 现在一个 n * m的黑白矩阵, 问这个大矩阵中有 ......
Beginner AtCoder Contest 312 abc

题解 ABC326E【Revenge of "The Salary of AtCoder Inc."】

根据期望的线性性,总工资的期望等于在每一个 \(i\) 处获得的工资的期望之和,而在 \(i\) 处获得的工资的期望 \(E(i)=A_i\times p(i)\),其中 \(p(i)\) 表示掷骰子掷到 \(i\) 且有效的概率。 初始 \(p(0)=1\),则只有从 \(0\sim i-1\) ......
题解 quot Revenge AtCoder Salary

线段树专题

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

AT_abc326_e Revenge of "The Salary of AtCoder Inc." 题解

AT_abc326_e Revenge of "The Salary of AtCoder Inc." 题解 一道简单的概率论+动态规划题目(然而我赛时没看这道题 题意 有一个长度为 \(n\) 的序列 \(A\)、一个 \(n\) 面骰子,掷若干次骰子,如果这一次掷骰子的点数小于等于上一次的点数, ......
题解 quot Revenge AtCoder AT_abc

AtCoder Beginner Contest(abc) 311

B - Vacation Together 难度: ⭐ 题目大意 给定n个人的工作计划, 'o'表示这天休息, 'x'表示工作; 请找出一段最长的所有人都休息的连续休息的天数; 解题思路 数据不大, 暴力即可; 神秘代码 #include<bits/stdc++.h> #define int lon ......
Beginner AtCoder Contest 311 abc

AtCoder Beginner Contest 321(ABC321)

A. 321-like Checker 直接模拟。 Code B. Cutoff 直接暴力枚举 \([0\sim100]\),每次把第 \(n\) 个数当作当前枚举的 \(i\),然后看看条件是否满足。 Code C. 321-like Searcher Description 给你一个 \(K\) ......
321 Beginner AtCoder Contest ABC

线段树二分

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

Atcoder Beginner Contest 326 (ABC326)

不知道为什么拖到现在,我是摆怪。 A. 2UP3DOWN 模拟,略。 B. 326-like Numbers 模拟,略。 C. Peak 双指针板子。 D. ABC Puzzle 基础 dfs。 但是赛时不知道为什么觉得状态数不会很少,于是写了一个巨大复杂的状压。这里粗略算算有效状态数: 仅考虑每行 ......
326 Beginner Atcoder Contest ABC

AtCoder Grand Contest 036 D Negative Cycle

洛谷传送门 AtCoder 传送门 没有负环等价于每个点都存在最短路。那么就是要找到一组标号 \(a_i\),使得对于每条 \(u \to v\) 且边权为 \(d\) 的边,都有 \(a_v - a_u \le d\)。 如果我们差分 \(b_i = a_i - a_{i + 1}\),那么每个 ......
Negative AtCoder Contest Grand Cycle

第 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 ++ < ......
线段 指针 背包 标记 问题

AtCoder Beginner Contest 326

A - 2UP3DOWN (abc326 A) 题目大意 100楼层,一次可以上最多两层,或下最多三层。 给定两楼层,问能否一次到达。 解题思路 比较大小,然后判断其差是是不是在\(2\)或 \(3\)内即可。 神奇的代码 #include <bits/stdc++.h> using namespa ......
Beginner AtCoder Contest 326

AtCoder Beginner Contest 326 题解

首先,\(\text{Happy Birthday to me !}\) A - 2UP3DOWN 常规ABCA... //If, one day, I finally manage to make my dreams a reality... //I wonder, will you still ......
题解 Beginner AtCoder Contest 326

【杂题乱写】AtCoder-ARC114

AtCoder-ARC114_A Not coprime \(50\) 内的质数只有 \(15\) 个,可能的答案也就只有 \(2^{15}\) 个,直接枚举。 提交记录:Submission - AtCoder AtCoder-ARC114_B Special Subsets 就是 \(i\) 与 ......
AtCoder-ARC AtCoder ARC 114

AtCoder Beginner Contest(abc) 310

B - Strictly Superior 难度: ⭐ 题目大意 给定n个商品的价格, 每个商品还有若干个属性, 请问是否存在一个商品是另外一个商品的上位品; 上位品的定义分两种, 一是价格相同, 但是商品A的属性不仅包括了商品B的属性, 还比商品B多了至少一个属性; 二是如果两商品的属性相同, 但 ......
Beginner AtCoder Contest 310 abc

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

AtCoder Beginner Contest 325

感觉错失了上分机会 A - Takahashi san (abc325 A) 题目大意 给定姓和名,输出尊称,即姓+san。 解题思路 按照题意模拟即可。 神奇的代码 #include <bits/stdc++.h> using namespace std; using LL = long long ......
Beginner AtCoder Contest 325

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

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

李超线段树

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