线段459579152 zhuanlan atcoder

AtCoder Beginner Contest 216 H Random Robots

洛谷传送门 AtCoder 传送门 下文令 \(n\) 为原题中的 \(K\),\(m\) 为原题中的 \(N\)。 首先概率转方案数,最后除 \(2^{nm}\) 即可。 考虑一个指数级暴力:枚举每个 bot 的终点 \(y_i\)(因为存在不能相交的限制,需要满足 \(y_1 < y_2 < \ ......
Beginner AtCoder Contest Random Robots

可持久化线段树学习笔记

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

AtCoder Regular Contest 164 F Subtree Reversi

洛谷传送门 AtCoder 传送门 非常好题目。 发现每个点颜色被反转的次数是固定的,为其深度(根结点深度为 \(0\))。于是可以看作是,一放棋子就得到分数。 那么先手取偶数层和后手取奇数层都会使先手得分,所以双方的目标都是尽可能多取偶数层的结点。 考虑若一开始有偶数层的叶子,那么当前的先手肯定会 ......
AtCoder Regular Contest Subtree Reversi

AtCoder Beginner Contest(abc) 309

B - Rotate 题目大意 给定一个n*n的矩阵, 要求把矩阵的最外围按照顺时针转动一个数据, 输出转动后的矩阵; 解题思路 数据不大, 暴力即可; 神秘代码 #include<bits/stdc++.h> #define int long long #define IOS ios::sync_ ......
Beginner AtCoder Contest 309 abc

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

线段树分治

猫树 猫树 线段树分治 ......
线段

算法笔记(1)线段树

原发表于个人博客。 前言 线段树,是数据结构皇冠上的明珠(我编的)。 它用途广泛,被一代代的oier应用,改进,优化。 本文介绍了线段树的基础知识和各种拓展(包括权值线段树,可持久化线段树),各种优化方式(包括zkw线段树,动态开点,离散化),希望能帮到更多的oier。 在学习线段树前,默认你应该学 ......
线段 算法 笔记

【学习笔记】线段树合并

前置知识:动态开点权值线段树。 线段树合并,顾名思义,就是将两棵权值线段树合并在一起。为什么不把两棵普通的线段树合并呢?因为那样好像没啥用。 我们知道,权值线段树支持着查询某个数的个数、查询第 \(k\) 大/小的数等操作,有了合并操作之后就可能会支持一些令人意想不到的操作。 放张图,可以帮助理解下 ......
线段 笔记

线段是否相交

快速排斥 快速排除不可能相交的情况 1 2 3, 4 但类似下面这类情况,矩形区域相交,但线段没相交的就无法处理了 跨立实验 若两线段相交,则两线段必须跨立。就是:线段a1a2与线段b1b2相交,则a1和a2一定在线段b1b2的两侧。 2d向量叉乘v1×v2,可以用来判断v2在v1的右手逆时针180 ......
线段

算法学习笔记(31): 李超线段树

李超线段树是一种按照值域维护一次函数最值的数据结构,其核心在于一次函数和值域的双单调性。 如果预先对于值域离散也可以维护其最值。 也就是说只要满足时一次函数,以及下标的单调性都可以利用李超线段树维护。 李超线段树就是利用线段树来维护一次函数的最值,每一个结点对应了一个区间 \([l, r]\)。 我 ......
线段 算法 笔记 31

AtCoder Regular Contest 167——B - Product of Divisors

题目很明显,给定 所有因数的积不断除以最多能除几次。 首先,很容易发现,对于每一对因子,都可以对答案得出B的贡献,设A的因子数目为n。 将A进行质因数分解,PBa1,PBa2,PBa3……PBam,那么因数个数就是质因子加一的乘积。 那么因子对数也就是前者一半。答案就是B乘因子对数除以二注意此处除操 ......
Divisors AtCoder Regular Contest Product

962. 最大宽度坡(权值线段树, 权值树状数组)

本题要快速找到某个数字在数组中左边<=它的数的最小下标。 可以建立一个权值线段树,nums[i]处维护最小下标。 class Solution { public: const static int N = 50010, INF = 0x3f3f3f3f; struct Node { int l, r ......
线段 数组 宽度 962

AtCoder Beginner Contest(abc) 308

B - Default Price 题目大意 小莫买了n个寿司, 现在给出m个寿司的名称和m+1个价格, 如果小莫买的其中一个寿司不在这m个寿司之中就用价格m0; 请问小莫买的寿司花了多少钱 解题思路 数据不大, 暴力哈希即可; 神秘代码 #include<bits/stdc++.h> #defin ......
Beginner AtCoder Contest 308 abc

点到线段的距离

情况1 情况2 情况3 情况4 public static float PointToLineSegmentDistance(Vector2 P, Vector2 A, Vector2 B) { float a = Vector2.Distance(A, B); float b = Vector2. ......
线段 点到

Atcoder Beginner Contest 324 G Generate Arrays 题解-Treap

为了更好的阅读体验,请点击这里 题目链接 套上平衡树板子就能做的很快的题,然后因为是指针存树,因此交换只需要把序列大小较小的挨个拿出来插到相应的地方即可。复杂度 \(O(N \log^2 N)\)。 但是一定要记住 不可以直接使用 std::swap 交换包含带有指针的类的实例(如代码中的 Trea ......
题解 Beginner Generate Atcoder Contest

AtCoder Regular Contest 167

Preface 补一下上周日的ARC,因为当天白天和队友一起VP了一场所以就没有精力再打一场了 这场经典C计数不会D这种贪心乱搞反而是一眼秒了,后面的EF过的太少就没看 A - Toasts for Breakfast Party 用一个类似于蛇形的放法就好了,比如对于\(n=9,m=5\),放法为 ......
AtCoder Regular Contest 167

Japan Registry Services (JPRS) Programming Contest 2023 (AtCoder Beginner Contest 324) 赛后总结

Japan Registry Services (JPRS) Programming Contest 2023 (AtCoder Beginner Contest 324) 赛后总结 可悲的是:我没来得及写题解。 T1 Same 秒切。 直接输入排一遍序再遍历即可。 #include <bits/s ......

比赛总结:Japan Registry Services (JPRS) Programming Contest 2023 (AtCoder Beginner Contest 324)

比赛:Japan Registry Services (JPRS) Programming Contest 2023 (AtCoder Beginner Contest 324) A-same 1.常规方法 int main() { int n; cin >> n; vector<int> s(n) ......

【学习笔记】可持久化线段树基础

点击查看目录 目录前言概念实现例题:Tower Defense标记永久化 前言 参考资料:oi-wiki 前置知识: 线段树基本操作 动态开点线段树 概念 可持久化线段树,又称主席树。 (事实上,据说,主席树应该是可持久化线段树的一个子集,主席树应该是单纯的针对静态查询第 \(k\) 小的问题,但是 ......
线段 基础 笔记

AtCoder Regular Contest 066 F Contest with Drinks Hard

洛谷传送门 AtCoder 传送门 下文令 \(a\) 为原题中的 \(T\)。 考虑若没有饮料,可以设 \(f_i\) 表示,考虑了前 \(i\) 道题,第 \(i\) 道题没做的最大得分。转移就枚举上一道没做的题 \(j\),那么 \([j + 1, i - 1]\) 形成一个连续段。设 \(b ......
Contest AtCoder Regular Drinks Hard

Atcoder Regular Contest 167

卡 B 下大分了,怎么回事呢。 A. Toasts for Breakfast Party 发现题意是让方差尽可能小,就是让 \(A\) 里的值尽可能接近。 所以从小到大排个序,把 \(A_{N,\dots,N-M+1}\) 依次放进 \(1,2,\dots,M\),再把 \(A_{N-M,\dot ......
Atcoder Regular Contest 167

AtCoder Beginner Contest 324

在高铁上加训! A - Same (abc324 A) 题目大意 给定\(n\)个数,问是否都相等。 解题思路 判断是不是全部数属于第一个数即可。或者直接拿set去重。 神奇的代码 #include <bits/stdc++.h> using namespace std; using LL = lo ......
Beginner AtCoder Contest 324

【题解】AtCoder-ARC167

AtCoder-ARC167A Toasts for Breakfast Party 一定不会有空盘,问题转化成 \(2m\) 个数,其中 \(2m-n\) 个是 \(0\),这样一定是最大值和最小值一起,次大值和次小值一起,以此类推。 提交记录:Submission - AtCoder AtCod ......
题解 AtCoder-ARC AtCoder ARC 167

线段树练习

习题都来自董老师的博客和b站: Luogu P4198 楼房重建 其实这道题的思路肯定是用线段树,但是为了计算结果线段树需要维护哪些信息?//mx表示区间内的最大斜率,sum表示区间内可见的,主要就是递归求出sum #include<iostream> #include<cstdio> #inclu ......
线段

AtCoder Beginner Contest 180 F Unbranched

洛谷传送门 AtCoder 传送门 首先进行一个容斥,把连通块最大值 \(= K\) 变成 \(\le K\) 的方案数减去 \(\le K - 1\) 的方案数。 考虑 dp,设 \(f_{i, j}\) 表示当前用了 \(i\) 个点,\(j\) 条边。转移即枚举其中一个连通块的大小 \(k\) ......
Unbranched Beginner AtCoder Contest 180

线段树模板

线段树理解起来不难,主要是书写起来比较麻烦 这里学的是董晓老师的线段树模板 #include<bits/stdc++.h> using namespace std; #define lc p<<1 #define rc p<<1|1 #define N 500005 int n,w[N]; stru ......
线段 模板

AtCoder Beginner Contest 324 DF题题解

比赛链接 D - Square Permutation 其实比较简单,但是比赛时候脑子不转了,竟然在尝试枚举全排列,然后算了一下复杂度直接不会做了。 正解应该是枚举完全平方数,底数枚举到 \(sqrt(10^{14})\) 即可,因为 n 最大为 13。 然后统计一下这个完全平方数各个数字出现了多少 ......
题解 Beginner AtCoder Contest 324

AtCoder Beginner Contest 324

D - Square Permutation 须知:最大的平方数的平方一定小于等于10n,平方数最多为10(n/2)(因为再大会越界) 因为要求的数一定是原数的排列组合,所以它们的元素和对应的元素个数一定相同 所以只要判断平方数的字符串是否与原字符串相等即可(这里可以利用排序判断) 点击查看代码 # ......
Beginner AtCoder Contest 324

*【学习笔记】(7) 线段树及高级用法

一.普通线段树 线段树(Segment Tree)几乎是算法竞赛最常用的数据结构了,它主要用于维护区间信息(要求满足结合律)。与树状数组相比,它可以实现 \(O(logn)\) 的区间修改,还可以同时支持多种操作(加、乘),更具通用性。 接下来我们用这道模板题为例,看看线段树是怎么维护区间和这一信息 ......
线段 笔记