T1 \(f_i\) 表示以 \(i\) 为结尾的答案,然后转移为 \(f_i=\max\limits_{j=1}^{i-1}(f_j+(a_i-a_j)^2+c)\) 这样会有不合法的情况无法转移,就是两个数之间有比他俩都大的值 但是这样的值一定会比从最大值转移要劣,所以直接斜率做一下就行 Code #include<bits/stdc++.h> #define int l
我竟然能独立想出来() 首先树上统计点对问题考虑 dfs 一遍顺便统计,再加上数据结构之类的。 考虑对于第 \(i\) 种语言,\(x,y\) 能开展贸易说明都被 \(i\) 覆盖到了。考虑每种语言覆一个颜色? 不需要。我们发现对于 \(x\) 我们只关心执行了所有跟 \(x\) 有关的覆盖操作(即覆盖到 \(x\))后
For sparse venctors, there might be too many "0"s in the array. What we need to do is only abstract the items which are not "0". We store these non-zero items in HashMap or HashSet. The HashMap solution is as following: class SparseVe
洛谷题面传送门 & UOJ 题面传送门 一道相对来说难度较低的提答题。 首先碰到提答题我们肯定不能思考一般性解法,只能就事论事,对着对应的数据设计出相应的程序。纵观 10 组数据,我们可以获得一些的结论: 对于所有跳转事件,那些目标位置 \(<\) 当前位置的事件,都形如 i c 0 c 1 x 0,也就
1. 头文件 #include <vector> using namespace std; 2. 定义与初始化 vector <Elem> vec // 创建一个空的vector vector <Elem> vec(vec1) // 复制一个vector vector <Elem> vec(n) // 创建一个vector,含有n个数据,数据均已缺省构造产生 vector <Elem> vec(n, elem)
code #include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ ios::sync_with_stdio(false); int C; vector<int> vec; while(cin>>C){ //TODO multiple input while(C--){ int cnt; cin>
剑指 Offer 54. 二叉搜索树的第k大节点 给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 4 示例 2: 输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6
前言 这篇东西大部分都是在瞎bb,大佬们可以选择不看。 需要先学一点点线性代数的内容。 由于本人太菜,这篇博客只会讨论二维的情况。 由于本人太懒,因此会缺少一些示意图。 向量 点积/数量积 一般用 \(\vec a \cdot \vec b\) 表示,有 \(\vec a \cdot \vec b = |\vec a||\vec b|\cos \l
数据结构 = 数据定义 + 数据操作 顺序表:一片连续存储的区域 结构定义: size:代表当前顺序表大小 length:当前一共存储了多少个元素 data_type:存储的元素类型 结构操作: 插入: 删除: 1、数据结构的定义: typedef struct Vector{ int *data; int size,length; }Vector; 将str
文章目录 队列 Queue492 · 队列维护541 · 左旋右旋迭代器 II栈421 · 简化路径575 · 字符串解码 队列 Queue deque注意发音,它是两端都可以进出的数据结构。如果将deque当作queue来用,需要做一些限制,一头只能进,另一头只能出。昨天学的Queue也是可以的,get是出,put是进。
文章目录 一、3D 中的方位与角位移1. 欧拉角 (Euler angles)2. 四元数的相关知识2.1 复数2.2 欧拉旋转定理2.3 三维空间旋转的拆分 3. 四元数 (Quaternion)3.1 四元数的运算3.2 四元数默认在极坐标下3.3 四元数的常用插值方法3.4 贝塞尔曲线和 Squad 插值 4 欧拉角、旋转矩
洛谷题面传送门 好题。 首先看到抠掉一个区间的限制,我们很自然地想到对前后缀跑一遍 MST 后把左右两半的信息合并起来的想法,于是问题转化为怎样维护前后缀的最小生成树。 直接做复杂度 \(nm^2\log n\),显然无法通过,乍一眼貌似也需要可持久化 LCT / 树状数组套 LCT 等奇奇怪怪的数
预习 1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 int main() 6 { 7 // 创建一个向量存储 int 8 vector<int> vec; 9 int i; 10 11 // 显示 vec 的原始大小 12 cout << "vector size = " <<
前言 这篇东西大部分都是在瞎bb,大佬们可以选择不看。大部分内容来自 \(\rm 3Blue1Brown\) 大佬的视频。 需要先学高斯消元。 基础向量 定义一个 \(n\) 维的向量 \(\vec v\) ,其长度用 \(|\vec v|\) 表示,一般来说,我们可以用一个 \(n\) 元组(可以理解为一个长度为 \(n\) 的序列)表示一
title: "dfs + 计算几何" author: Sun-Wind date: January 28,2022 这道题需要处理的信息比较多,需要注意的是一个油滴扩展后可能会包含其他的点 #include <iostream> #include <utility> #include <vector> #include <cmath> using namespace std; typedef long long ll; #define
\[\color{red}{\text{校长者,真神人也,左马桶,右永神,会执利笔破邪炁,何人当之?}} \\ \begin{array}{|} \hline \color{pink}{\text{The principal is really a god}} \\ \color{pink}{\text{with a closestool on the left and Yongshen on the right}} \\ \color{pink}{\text{holdi
头文件 #include <algorithm> 时间复杂度 它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n) 使用 默认升序排序 int array[5] = {3,100,45,2,0}; sort(a,a+5); 自定义第三个参数逆序排序 int cmp1(int a,int b){ return b>a; } int array[5] = {3,100,45,2,0}; s
我要在latex里面排版的公式如下: 最初使用如下代码进行排版: \begin{equation} \label{deqn_ex13} \begin{aligned} \widehat{QoE}_{n \rightarrow H-1}(B_{n-1}, {\textbf{D}}_{n \rightarrow H-1}^*) \\ &= \underset {(\vec{r}_{0 \rightarrow H-1},\vec{b}_{0 \righ
前言 高中数学必修二内容,基本理论见 oiwiki。 向量及其基本运算 先上代码: struct Node{ double x,y;Node(){} Node(double _x,double _y){x=_x;y=_y;} void input(){scanf("%lf%lf",&x,&y);} Node friend operator+(Node a,Node b){return Node(a.x+b.x,a.y+b.y);
所以说我爆蛋了...... T1 高中数列题 化式子后可以一直递归下去 AC_code #include<bits/stdc++.h> using namespace std; #define int long long #define fo(i,x,y) for(int i=(x);i<=(y);i++) #define fu(i,x,y) for(int i=(x);i>=(y);i--) int read(){ int s=0,t=1;char ch
A. 中心城镇问题 设 \(f_{i,j}\) 表示以 \(i\) 为根的子树内里 \(i\) 最近的选择点的深度为 \(j\) 转移的话 \((j-dep_x)*2>K\) 直接加上对应的位置 \(0 < (j-dep_x)*2\leq K\) 需要判断保证选择的子树之间的距离要大于 \(K\) 还有一种 \(f_i,dep_i=f_i,dep_{i+k+1}+w_i\) 选择自
高中数列问题 Let \(p_i\) be \(\lfloor\frac {i+b}c\rfloor,sf_i\) be \(\sum_{i=1}^n,q_j\) be the first k whose \(p_k=j\),which is found to be \(\rm jC-B\) \[\begin{aligned}a[n]-A&=\sum_{i=1}^n f_{i}a[p_i]\\ a[n]-A&=\sum_{i=1}^n f_i\l
选择性必修第一册同步拔高,难度3颗星! 模块导图 知识剖析 1 求空间角 \((1)\)求异面直线\(a\),\(b\)所成的角 已知\(a\),\(b\)为两异面直线,\(A\),\(C\)与\(B\),\(D\)分别是\(a\),\(b\)上的任意两点,\(a\),\(b\)所成的角为\(θ\),则\(\cos \theta=|\cos <\overrightarrow{A C}, \ove
使用场景:当我们点击屏幕时获取的坐标和three的坐标不一样时,这时候就需要转换。 const convertCoodsToThree = (mouseX, mouseY, mouseZ = 0) => { const x = (mouseX / window.innerWidth) * 2 - 1; const y = -(mouseY / window.innerHeight) * 2 + 1; var vec
calPoseFrom3Points 功能 已知坐标系a的原点、x轴正半轴上任一点和y轴正半轴上任一点在坐标系b下的坐标,求解坐标系a到坐标系b的旋转矩阵R和平移矩阵T。 原理 如图所示,点 O 2