交点 线段 射线 方程
abc327F - Apples(线段树)
https://atcoder.jp/contests/abc327/tasks/abc327_f 我们将时间看作x轴,位置看作y轴,那么我们随着时间增加,维护新加的点对区间的贡献,同时减去过时的点,线段树区间加法维护最大值即可。 #include<cstdio> #include<algorith ......
JS判断点是否在线段上
本文利用向量的点积和叉积来判断点是否在线段上。 基础知识补充 从零开始的高中数学——向量、向量的点积、带你一次搞懂点积(内积)、叉积(外积)、Unity游戏开发——向量运算(点乘和叉乘 说明 点积可以用来判断两个向量的夹角,如果这个夹角是0或者180度,说明这个点在直线上; 叉积可以用来判断一个点到 ......
Unity-射线
Unity-射线 前言 在游戏开发的过程中,许多功能的实现都需要物理检测,而 发射射线 是Unity中物理检测的通用方法。例如,我们需要检测玩家(Player)脚下是否是 地面(图层为 Ground),只需要从脚底发射一条射线,检测Player脚下GameObject的图层是否为Ground即可 ......
「NOIP2014」解方程 题解
思路 首先我们可以观察到 \(n\) 和 \(m\) 与\(a_i\) 相比小的很多,所以我们可以考虑直接暴力求解 但是 \(a_i\) 太大了,所以如果需要直接计算的话需要全程使用高精度算法。 因为高精度算法代码量有大速度又慢我们可依考虑将 \(a_i\) 转化为一个极大的指数取模的结果,因为只有 ......
模数为素数幂的同余方程解法
本节考虑形如: f(x)=anxn+an-1xn-1+...+a1x1+a0≡0 mod pk 的方程,其中a>=2,p为素数,p不整除a。 方程解法步骤: 1.求出 f(x)≡0 mod p 的解 x≡c mod p 2.设 f(x)≡ 0 mod p2 的解为x≡=c+yp2-1 求出y,带入解 ......
麦克斯韦方程组
麦克斯韦方程组 \(\newcommand{\big}{\displaystyle}\)\(\newcommand{\d}{\text{ d}}\)\(\newcommand{\e}{\epsilon}\)到目前为止,我们已经零碎地研究过麦克斯韦方程组。现在我们开始讨论完整地电磁场理论,对于可能以任 ......
李超线段树
极其BT的东西,又卡精度又卡边界情况,代码还异常长(依托答辩)。 解决问题 给出一堆线段或直线(\(log^2\) 或 \(log\) 复杂度),问某个 \(x\) 坐标上最高的线。可以搭配 \(DP\) 进行转移上的优化,常见模型为 \(n^2\) 的 \(f_u=min(a_u\times a_ ......
线段树
线段树引入遇到过好多次线段树的题目,要么就是用其他的方法去解决,要么就是不会写!!今天痛定思痛,决定好好归纳整理一下线段树 线段树解决的是「区间和」的问题,且该「区间」会被修改 什么意思呢?举个简单的例子,对于 nums = [1, 2, 3, 4, 5] 如果我们需要多次求某些区间的和,是不是首先 ......
MATLAB热传导方程模型最小二乘法模型、线性规划对集成电路板炉温优化
原文链接:https://tecdat.cn/?p=34230 原文出处:拓端数据部落公众号 分析师:Luoyan Zhang 集成电路板等电子产品生产中,控制回焊炉各部分保持工艺要求的温度对产品质量至关重要。通过分析炉温曲线,可以检查和改善产品生产质量,提高产量和解决生产问题。高效温度曲线测试系统 ......
理解线段树和主席树:解决区间操作的利器
在计算机科学和算法领域,区间操作问题是一类常见且重要的问题,它们涉及到在一维数据结构中执行查询和更新操作。线段树和主席树是两种用于解决这类问题的强大数据结构。本文将介绍这两种树状数据结构,以及它们在不同应用领域中的使用。 什么是线段树? 线段树是一种用于处理区间操作问题的数据结构,它的核心思想是将一 ......
原点到线段的垂足
原理: 1) 求出向量ao在ab上的投影距离 2) a沿着ab方向移动投影距离就是垂足点的位置 // 获得原点到直线ab的垂点 public static Vector2 GetPerpendicularToOrigin(Vector2 a, Vector2 b) { var ab = b - a; ......
线段树历史值
P6242 【模板】线段树 3 支持区间加,区间取 \(\min\),区间求和,区间 \(\max\),区间历史 \(\max\)。 先提一嘴吉司机。 就是对线段树的每个节点记录最大值,严格次大值和最大值个数,只在 \(se<v<mx\) 的区间操作,否则向下递归。如果没有区间加,复杂度势能分析是 ......
线性代数 - 矩阵求直线方程组
已知两直线的方程组,求这两条直线的交点。 把方程转换成矩阵表示的方式 最终表示为: 求逆矩阵: 参考 求两条线段交点zz - 马语者 - 博客园 (cnblogs.com) 线性方程组矩阵解法 (shuxuele.com) 矩阵的行列式 (shuxuele.com) ......
Exhausted? 题解(线段树)
Exhausted? 题解 前言: 看本篇题解,您如果想要掌握所有知识点的话,请您先去了解下什么是霍尔定理,当然如果可以的话,可以去看看我的这个博客。 涉及的算法和思想知识点: 线段树、扫描线。 霍尔定理。 较少的容斥原理。 正文: 理论分析: 从简单入手:我们想想,要是值域再小一点的话,我们可以怎 ......
线段树合并
空间复杂度,一般是根据操作次数来计算的,或者按照题目的空间,算出最大开多少数组。 根据感性理解,线段树的深度是\(\lceil log_2n\rceil\)的,反正\(d = \lfloor log_2n\rfloor+1\)肯定够。 那\(m\)次操作,注意这个操作不一定是原题中的询问,而是你对于 ......
向量叉乘判断两点是否在线段同侧
ap1×ab与ap2×ab的结果异号,则表示两点在线段两侧;同号则表示在线段同侧 有一个点在线段上或两个点都在线段上,当做在线段同侧处理 //两点是否在线段同侧 public static bool IsTwoPointSameSideOfSegment(Vector2 a, Vector2 b, ......
用线段树来接树状数组类的问题
大致解决的问题就是区间查询以及单点的修改 #include<bits/stdc++.h> #define int long long using namespace std; const int N=5e5+10; int a[N],tag[N<<2]; struct{ struct{ int l, ......
【scipy 基础】--积分和微分方程
对于手工计算来说,积分计算是非常困难的,对于一些简单的函数,我们可以直接通过已知的积分公式来求解,但在更多的情况下,原函数并没有简单的表达式,因此确定积分的反函数变得非常困难。 另外,相对于微分运算来说,积分运算则具有更多的多样性,包括不同的积分方法(如换元积分法、分部积分法等)和积分技巧,需要根据 ......
【数值分析】第5章-常微分方程的数值解
第5章-常微分方程的数值解 基本思想:若微分方程有初始值 \(x_0, y_0\) ,则把微分方程转化为递推公式,从而递推出每个离散点的方程解 5.1 欧拉方法 已知: \[\left\{ \begin{array}{l} \frac{dy}{dx} = f(x,y) \\ y(x_0) = y_0 ......
向量点乘判断点是否在线段上
几种要考虑的情况 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 ......
弹性碰撞方程速解公式
动碰静 设 \(m_1\) 创物, \(m_2\) 被创物, \(v_1\) 创物初速度, \(v_1^{'}\) 创物末速度, \(v_2^{'}\) 被创物末速度。 联立以下方程组: \[ \left\{ \begin{aligned} m_1v_1 & = m_1v_1^{'}+m_2v_2^ ......
【数值分析】第6章-解线性方程组的迭代法
第6章-解线性方程组的迭代法 \[A\vec{x} = \vec{b} \Leftrightarrow \vec{x} = B\vec{x} + \vec{f} \]建立迭代 \[\vec{x}^{(k+1)} = B \vec{x}^{(k)} + \vec{f} \]B称为迭代矩阵 Jacobi ......
点是否在线段上
几种要考虑的情况 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 ......
线段与圆是否相交
一个点在圆内 两个点都在圆内 两个点都在圆外 public static bool IsSegmentCircleIntersect(Vector2 p1, Vector2 p2, Vector2 center, float r) { float sqrR = r * r; //1) 一个点在圆内, ......