classSolution{public:intsumOddLengthSubarrays(vector<int>& arr){intans =0;intendIndex = arr.size() -1;for(inti =0; i <= endIndex; i++) {intleftCount = i;intrightCount = endIndex - i;intleftOdd = (leftCount +1) /2;intrightOdd = (rightCount +1) /2;intleftEven = leftCount...
dfn序:只记录入栈的序列 用dfs序,记录每个点入栈是什么时间 l[u] = ++time,出栈是什么时间r[u] = time 在这个时间之内的就是它的子树 用树状数组维护区间和 如果u 的子树增加了x,在[l[u],r[u]]内的区间和也要增加 x 所以直接把x 增加在 l[u] 位置或者 r[u] 位置就可以了 询问u 子树的权值...
classSolution{public:intgetMissingNumber(vector<int>&nums){if(nums.empty())return0;intl=0,r=nums.size()-1;while(l<r){intmid=l+r>>1;if(nums[mid]!=mid)r=mid;//递增且仅有一个缺失 <==> 对不上号:缺失!elsel=mid+1;}if(nums[r]==r)r++;//特殊情况:当所有数都满足nums[i] ==...
{ return cost>u.cost; } }; vector<edge> g[N]; int dist[N],f[N]; //f[]数组存储到每个节点的单条路径花费 int n,m; void init(){ 66 / 176 for(int i=0;i<=n;i++) dist[i]=f[i]=inf; dist[1]=0; } void dj(){ priority_queue<node> q; q.push(node(1,0)); while(...
vector 数组 随机读改、尾部插入、尾部删除 O(1)头部插入、头部删除 O(n) 无序 可重复 支持随机访问 deque 双端队列 头尾插入、头尾删除 O(1) 无序 可重复 一个中央控制器 + 多个缓冲区,支持首尾快速增删,支持随机访问 forward_list 单向链表 插入、删除 O(1) 无序 可重复 不支持随机访问 list 双向链表...
#include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm>#include <string>#include <set>#include <functional>#include <numeric>#include <sstream>#include <stack>#include #include <queue>#defineCL(arr,val)memset(arr,val,sizeof(arr))#definelc...
输入样例: 3.5 -2.7 -13.9 8.7 输出样例: (-10.4, 6.0) #include <stdio.h> #include <math.h> #define EPSILON 0.05 struct Vector { double x; double y; }; int main(void) { struct Vector v1, v2, v3; scanf("%lf%lf%lf%lf", &v1.x, &v1.y, &v2.x, &v2.y); v3.x = v...
vector<pii> G[100050]; int dep[100050]; int fa[100050][18]; int cha[100050]; int ans[100050]; void dfs(int u,int f) { fa[u][0]=f; rep(i,1,17) fa[u][i]=fa[fa[u][i-1]][i-1]; for(pii &p:G[u]) { int...
vector 数组 随机读改、尾部插入、尾部删除 O(1)头部插入、头部删除 O(n) 无序 可重复 支持快速随机访问 list 双向链表 插入、删除 O(1)随机读改 O(n) 无序 可重复 支持快速增删 deque 双端队列 头尾插入、头尾删除 O(1) 无序 可重复 一个中央控制器 + 多个缓冲区,支持首尾快速增删,支持随机访问 stac...
(1)序列式容器(Sequence containers),每个元素都有固定位置--取决于插入时机和地点,和元素值无关,vector、deque、list; Vector:将元素置于一个动态数组中加以管理,可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快速。但是在中部或头部安插元素比较费时; Deque:是“double-ended queue”的缩写,可以随...