【数据结构】点分治 点分树
求树上长度小于等于k的路径
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 10010, M = N * 2;int n, m;
int h[N], e[M], w[M], ne[M], idx; //邻接表
bool st[N]; //记录每个点是否被删掉
int p[N]; //存储当前重心的所有子树中所有节点之间的所有距离
int q[N]; //存储当前子树中所有节点之间的所有距离void add(int a, int b, int c) //添加边
{e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}int get_size(int u, int fa) //求以 u 为根的子树大小
{if(st[u]) return 0; //被删掉的节点不考虑int res = 1; //记录节点数for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(j == fa) continue;res += get_size(j, u);}return res;
}//tot 表示当前整棵树的大小
//求重心 wc(并不一定是重心,只要保证删掉 wc 每个子树的大小 <= tot / 2 即可),并返回当前子树大小
int get_wc(int u, int fa, int tot, int &wc)
{if(st[u]) return 0; //如果当前点已经被删除,直接返回int sum = 1, ms = 0; //sum 表示当前子树的节点数,ms 表示去掉当前点剩余子树的节点最大值for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(j == fa) continue;int t = get_wc(j, u, tot, wc);ms = max(ms, t);sum += t;}ms = max(ms, tot - sum);if(ms <= tot / 2) wc = u; //如果子树的节点最大值 <= tot / 2,说明找到一个 “重心”return sum;
}//求一下 u 所在子树中每个点里到重心的距离,u 到重心的距离为 dist
void get_dist(int u, int fa, int dist, int &qt)
{if(st[u]) return;q[qt++] = dist;for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(j == fa) continue;get_dist(j, u, dist + w[i], qt);}
}int get(int a[], int k) //求长度为 k 的数组 a 中相加和 <= m 的数对个数
{sort(a, a + k); //先将 a 数组从小到大排序int res = 0; //记录总方案数for(int i = k - 1, j = -1; i >= 0; i--){while(j + 1 < i && a[j + 1] + a[i] <= m) j++;j = min(j, i - 1); //j 最多只能到 i - 1res += j + 1; //累加方案数}return res;
}int calc(int u) //点分治
{if(st[u]) return 0; //如果当前点已经被删除,直接返回int res = 0; //记录答案get_wc(u, -1, get_size(u, -1), u); //找重心st[u] = true; //删除重心//归并处理所有子树int pt = 0; //记录 p 数组的大小for(int i = h[u]; i != -1; i = ne[i]){int j = e[i], qt = 0; //qt 表示 q 数组的大小get_dist(j, -1, w[i], qt); //求一下 j 所在子树中每个点里到重心的距离,并存到 q 数组中res -= get(q, qt); //减去当前子树中不符合条件的路径条数for(int k = 0; k < qt; k++){if(q[k] <= m) res++; //加上所有到重心的距离 <= m 的路径p[pt++] = q[k]; //将当前子树中的路径全部加入 p 数组}}res += get(p, pt); //加上所有端点在不同子树的合法路径条数for(int i = h[u]; i != -1; i = ne[i]) res += calc(e[i]); //递归处理每棵子树内部的路径return res;
}int main()
{while(scanf("%d%d", &n, &m), n || m){memset(h, -1, sizeof h); //初始化邻接表memset(st, 0, sizeof st); //清空标记数组for(int i = 0; i < n - 1; i++){int a, b, c;scanf("%d%d%d", &a, &b, &c);add(a, b, c), add(b, a, c); //无向边}printf("%d\n", calc(0)); //点分治}return 0;
}
264. 权值
给定一棵 NN 个节点的树,每条边带有一个权值。
求一条简单路径,路径上各条边的权值和等于 KK,且路径包含的边的数量最少。
输入格式
第一行两个整数 N,KN,K。
第 2∼N2∼N 行每行三个整数 x,y,zx,y,z,表示一条无向边的两个端点 x,yx,y 和权值 zz,点的编号从 00 开始。
输出格式
输出一个整数,表示最少边数量。
如果不存在满足要求的路径,输出 −1−1。
数据范围
1≤N≤2×1051≤N≤2×105,
1≤K≤1061≤K≤106,
0≤z≤1060≤z≤106
输入样例:
Copy
4 3
0 1 1
1 2 2
1 3 4
输出样例:
Copy
2
#include <iostream>
#include <cstring>using namespace std;typedef pair<int, int> PII;const int N = 200010, M = N * 2, S = 1000010, INF = 0x3f3f3f3f;int n, m;
int h[N], e[M], w[M], ne[M], idx;
bool st[N];
//p[i] 存储所有子树中的每个点到重心的距离和边数
//q[i] 存储当前子树中的每个点到重心的距离和边数
PII p[N], q[N];
int f[S]; //f[i] 表示前面所有子树中到重心距离为 i 的路径的边数最小值
int res = INF; //记录答案void add(int a, int b, int c) //添加边
{e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}int get_size(int u, int fa) //求 u 所在子树的大小
{if(st[u]) return 0;int res = 1;for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(j == fa) continue;res += get_size(j, u);}return res;
}int get_wc(int u, int fa, int tot, int &wc) //求重心,并返回子树大小
{if(st[u]) return 0;int sum = 1, ms = 0;for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(j == fa) continue;int t = get_wc(j, u, tot, wc);ms = max(ms, t);sum += t;}ms = max(ms, tot - sum);if(ms <= tot / 2) wc = u;return sum;
}//求一下当前子树中的所有点到重心的距离和边数
//dist 表示 u 到重心的距离
//cnt 表示 u 到重心的边数
void get_dist(int u, int fa, int dist, int cnt, int &qt)
{if(st[u] || dist > m) return; //被删的点、到重心的距离 > m 的点不需要考虑q[qt++] = {dist, cnt};for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(j == fa) continue;get_dist(j, u, dist + w[i], cnt + 1, qt);}
}void calc(int u) //点分治
{if(st[u]) return;get_wc(u, -1, get_size(u, -1), u); //求重心st[u] = true; //将重心删去//归并子树之间的信息int pt = 0;for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];int qt = 0;get_dist(j, -1, w[i], 1, qt); //求一下当前子树中的所有点到重心的距离和边数for(int k = 0; k < qt; k++){auto &t = q[k];if(t.first == m) res = min(res, t.second); //更新第三类路径res = min(res, f[m - t.first] + t.second); //更新第二类路径p[pt++] = t; //将当前节点存入整棵子树的数组中}for(int k = 0; k < qt; k++) //用当前子树的信息更新 f{auto &t = q[k];f[t.first] = min(f[t.first], t.second);}}for(int i = 0; i < pt; i++) f[p[i].first] = INF; //重置 ffor(int i = h[u]; i != -1; i = ne[i]) calc(e[i]); //递归处理每棵子树
}int main()
{scanf("%d%d", &n, &m);memset(h, -1, sizeof h); //初始化邻接表for(int i = 0; i < n - 1; i++){int a, b, c;scanf("%d%d%d", &a, &b, &c);add(a, b, c), add(b, a, c); //无向边}memset(f, 0x3f, sizeof f); //初始化 fcalc(0); //点分治if(res == INF) res = -1; //如果 res = INF,说明无解printf("%d\n", res);return 0;
}
2226. 开店
- 题目
- 提交记录
- 讨论
- 题解
- 视频讲解
MarkDown视图Copy
风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到人生哲学。
最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱。
这样的想法当然非常好啦,但是她们也发现她们面临着一个问题,那就是店开在哪里,面向什么样的人群。
很神奇的是,幻想乡的地图是一个树形结构,幻想乡一共有 nn 个地方,编号为 11 到 nn,被 n−1n−1 条带权的边连接起来。
每个地方都住着一个妖怪,其中第 ii 个地方的妖怪年龄是 xixi。
妖怪都是些比较喜欢安静的家伙,所以它们并不希望和很多妖怪相邻。
所以这个树所有顶点的度数都小于或等于 33。
妖怪和人一样,兴趣点随着年龄的变化自然就会变化,比如我们的 1818 岁少女幽香和八云紫就比较喜欢可爱的东西。
幽香通过研究发现,基本上妖怪的兴趣只跟年龄有关,所以幽香打算选择一个地方 uu(uu为编号),然后在 uu 开一家面向年龄在 LL 到 RR 之间(即年龄大于等于 LL、小于等于 RR)的妖怪的店。
也有可能 uu 这个地方离这些妖怪比较远,于是幽香就想要知道所有年龄在 LL 到 RR 之间的妖怪,到点 uu 的距离的和是多少(妖怪到 uu 的距离是该妖怪所在地方到 uu 的路径上的边的权之和),幽香把这个称为这个开店方案的方便值。
幽香她们还没有决定要把店开在哪里,八云紫倒是准备了很多方案,于是幽香想要知道,对于每个方案,方便值是多少呢。
输入格式
第一行三个用空格分开的数 n、Qn、Q 和 AA,表示树的大小、开店的方案个数和妖怪的年龄上限。
第二行 nn 个用空格分开的数 x1、x2、…、xnx1、x2、…、xn,xixi 表示第 ii 个地点妖怪的年龄,满足 0<=xi<A0<=xi<A。(年龄是可以为 00 的,例如刚出生的妖怪的年龄为 00。)
接下来 n−1n−1 行,每行三个用空格分开的数 a、b、ca、b、c,表示树上的顶点 aa 和 bb 之间有一条权为 cc 的边,aa 和 bb 是顶点编号。
接下来 QQ 行,每行三个用空格分开的数 u、a、bu、a、b。对于这 QQ 行的每一行,用 a、b、Aa、b、A 计算出 LL 和 RR,表示询问“在地方 uu 开店,面向妖怪的年龄区间为 [L,R][L,R] 的方案的方便值是多少”。
对于其中第 11 行,LL 和 RR 的计算方法为:L=min(a%A,b%A)L=min(a%A,b%A), R=max(a%A,b%A)R=max(a%A,b%A)。
对于第 22 到第 QQ 行,假设前一行得到的方便值为 ansans,那么当前行的 LL 和 RR 计算方法为: L=min((a+ans)%A,(b+ans)%A)L=min((a+ans)%A,(b+ans)%A), R=max((a+ans)%A,(b+ans)%A)R=max((a+ans)%A,(b+ans)%A)。
输出格式
对于每个方案,输出一行表示方便值。
数据范围
1≤n≤1500001≤n≤150000,
1≤Q≤2000001≤Q≤200000,
1≤A≤1091≤A≤109,
1≤c≤10001≤c≤1000
输入样例:
Copy
10 10 10
0 0 7 2 1 4 7 7 7 9
1 2 270
2 3 217
1 4 326
2 5 361
4 6 116
3 7 38
1 8 800
6 9 210
7 10 278
8 9 8
2 8 0
9 3 1
8 0 8
4 2 7
9 7 3
4 7 0
2 2 7
3 2 1
2 3 4
输出样例:
Copy
1603
957
7161
9466
3232
5223
1879
1669
1282
0
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;typedef long long LL;const int N = 150010, M = N * 2;int n, m, A;
int h[N], e[M], w[M], ne[M], idx; //邻接表
int age[N]; //存储每个节点的年龄
bool st[N]; //记录每个节点是否被删掉
struct Father
{int u, num; //记录每个节点在它所在的子树的重心 u 的第 num 个儿子中LL dist; //记录每个节点到重心 u 的距离
}; //存储每个节点关于父节点的信息
vector<Father> f[N]; //对于每个节点都要存储若干个父节点的信息
struct Son
{int age; //记录当前节点的年龄LL dist; //记录当前节点到重心的距离bool operator< (const Son &t) const{return age < t.age;}
};
vector<Son> son[N][3]; //对于每个节点最多有 3 棵子树,需要存储每棵子树中所有节点的信息void add(int a, int b, int c) //添加边
{e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}int get_size(int u, int fa) //求 u 所在子树的大小
{if(st[u]) return 0; //如果 u 已经被删掉,直接返回int res = 1;for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(j == fa) continue;res += get_size(j, u);}return res;
}int get_wc(int u, int fa, int tot, int &wc) //求重心
{if(st[u]) return 0; //如果 u 已经被删掉,直接返回int sum = 1, ms = 0; //记录 u 所在子树大小,ms 表示所有子树的最大节点数for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(j == fa) continue;int t = get_wc(j, u, tot, wc);ms = max(ms, t);sum += t;}ms = max(ms, tot - sum);if(ms <= tot / 2) wc = u;return sum;
}//dist 表示 u 到重心的距离
//wc 表示重心
//k 表示 u 是 wc 的第几棵子树
void get_dist(int u, int fa, LL dist, int wc, int k, vector<Son> &p) //将 u 的第 k 个子树中所有节点存储 p
{if(st[u]) return; //如果 u 已经被删掉,直接返回f[u].push_back({wc, k, dist}); //存储重心信息p.push_back({age[u], dist}); //存储子节点信息for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(j == fa) continue;get_dist(j, u, dist + w[i], wc, k, p);}
}void calc(int u) //构建点分树
{if(st[u]) return; //如果 u 已经被删掉,直接返回get_wc(u, -1, get_size(u, -1), u); //求重心st[u] = true; //将重心删掉for(int i = h[u], k = 0; i != -1; i = ne[i]) //k 表示当前子树的编号{int j = e[i];if(st[j]) continue; //如果 j 已经被删掉,说明它已经作为重心出现在前面,不再考虑auto &p = son[u][k]; //当前子树对应的容器p.push_back({-1, 0}), p.push_back({A + 1, 0}); //加入两个哨兵,防止边界情况get_dist(j, -1, w[i], u, k, p); //将子树中所有点存储对应的容器中k++;sort(p.begin(), p.end()); //将子树中所有节点按照年龄排序for(int i = 1; i < p.size(); i++) p[i].dist += p[i - 1].dist; //预处理距离的前缀和}for(int i = h[u]; i != -1; i = ne[i]) calc(e[i]); //递归构建每棵子树
}LL query(int u, int l, int r) //计算所有年龄在 [l, r] 之间的点到 u 的距离之和
{LL res = 0; //记录答案for(int i = 0; i < f[u].size(); i++) //枚举 u 所在的每一层{auto &t = f[u][i]; //记录当前层的重心int g = age[t.u];if(g >= l && g <= r) res += t.dist; //如果重心也在年龄范围内,单独考虑for(int j = 0; j < 3; j++) //枚举重心的所有子树{if(j == t.num) continue; //和 u 在同一棵子树的节点不用考虑auto &p = son[t.u][j]; //当前子树的所有节点if(p.empty()) continue; //如果当前子树为空,直接跳过int a = lower_bound(p.begin(), p.end(), Son({l, -1})) - p.begin();int b = lower_bound(p.begin(), p.end(), Son({r + 1, -1})) - p.begin() - 1;res += t.dist * (b - a + 1) + p[b].dist - p[a - 1].dist; //计算当前层和 u 不在同一子树的所有路径的距离和}}for(int i = 0; i < 3; i++) //枚举 u 的所有子树{auto &p = son[u][i]; //当前子树的所有节点if(p.empty()) continue; //如果当前子树为空,直接跳过int a = lower_bound(p.begin(), p.end(), Son({l, -1})) - p.begin();int b = lower_bound(p.begin(), p.end(), Son({r + 1, -1})) - p.begin() - 1;res += p[b].dist - p[a - 1].dist; //计算当前子树中所有路径的距离和}return res;
}int main()
{scanf("%d%d%d", &n, &m, &A);for(int i = 1; i <= n; i++) scanf("%d", &age[i]);memset(h, -1, sizeof h); //初始化邻接表for(int i = 0; i < n - 1; i++){int a, b, c;scanf("%d%d%d", &a, &b, &c);add(a, b, c), add(b, a, c); //无向边}calc(1); //构建点分树LL res = 0; //记录当前的答案while(m--){int u, a, b;scanf("%d%d%d", &u, &a, &b);int l = (a + res) % A, r = (b + res) % A;if(l > r) swap(l, r);res = query(u, l, r); //查询当前询问printf("%lld\n", res);}return 0;
}
相关文章:

【数据结构】点分治 点分树
求树上长度小于等于k的路径 #include <iostream> #include <cstring> #include <algorithm>using namespace std;const int N 10010, M N * 2;int n, m; int h[N], e[M], w[M], ne[M], idx; //邻接表 bool st[N]; //记录每个点是否被删掉 int p[N]; //存储…...

K8s Calico替换为Cilium,以及安装Cilium过程(鲁莽版)
迁移CNI插件的3种办法: 1、创建一个新的集群,通过Gitops的方式迁移负载,然而,这可能涉及大量的准备工作和潜在的中断。 2、另一种方法是重新配置/etc/cni/net.d/指向Cilium。但是,现有的pod仍将由旧的…...

背景图鼠标放上去切换图片过渡效果
文章目录 css鼠标放上去之前效果鼠标放上去时效果 css <li class"message"></li>.message {width: 22px;height: 22px;background-image: url(/assets/message-01.png);background-size: cover;background-position: center;transition: background-ima…...

【Linux】当前进展
驱动层日志添加了下文件目录,函数,代码行的打印(这里要小心,驱动目录源代码打印日志里边添进程号可能有问题,因为在驱动初始化的时候,内核还没有创建进程,不过猜测可以先不打印进程相关信息&…...

阿里云云效多个ssh密钥对配置
实现功能 windows本地多个ssh密钥对,分别对应不同的阿里云账号的云效 实现办法 1.生成ssh密钥对 ssh-keygen -t rsa -f C:\xxx\id_rsa_customname(我这里C:\Users\admin\.ssh\id_rsa_customname) 2.配置.ssh目录的config文件 # ruiyi Host customnameHostName codeup.al…...

前后端跨域问题及其在ThinkPHP中的解决方案
在现代Web开发中,前后端分离的架构越来越普遍,但这也带来了跨域问题。跨域指的是在一个域下的网页试图请求另一个域的资源,浏览器出于安全考虑会限制这种行为。本文将探讨如何在ThinkPHP中解决跨域问题。 #### 1. 什么是跨域? 跨…...

基于CentOS7上安装MicroK8s(最小生产的 Kubernetes)
简介 MicroK8s是一个轻量级的Kubernetes发行版,其内存和存储要求远低于全尺寸Kubernetes集群。它可以在几分钟内通过一条命令快速创建功能齐全的Kubernetes集群,极大地简化了部署过程。 兼容性:MicroK8s与Kubernetes全面兼容,确保用户可以无缝迁移和扩展他们的应用程序。 …...

从《GTA5》的反外挂斗争看网络安全的重要性
摘要: 在网络游戏的世界里,外挂(作弊软件)一直是破坏游戏公平性和玩家体验的一大难题。作为一款深受全球玩家喜爱的游戏,《GTA5》(Grand Theft Auto V)在线模式也不例外地遭遇了外挂问题。本文将…...

python如何将字符转换为数字
python中的字符数字之间的转换函数 int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 complex(real [,imag ]) 创建一个复数 str(x ) 将对象 x 转换为字…...

TikTok流量不佳:是网络环境选择不当还是其他原因?
TikTok,作为全球短视频社交平台的佼佼者,每天都有海量的内容被上传和分享。然而,很多用户和内容创作者发现,他们的TikTok视频流量并不理想。这引发了一个问题:TikTok流量不佳,是因为网络环境选择不当&#…...

QT菜单栏设计(二级菜单栏)
目的:创建一级菜单栏,添加对应选项,并向一级菜单栏中添加二级菜单栏选项。 #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindo…...

网站建设中,常用的后台技术有哪些,他们分别擅长做什么网站平台
PHP、Python、JavaScript、Ruby、Java和.NET各自适用于不同类型的网站平台。以下是对这些编程语言适用场景的具体介绍: PHP Web开发:PHP是一种广泛使用的开源服务器端脚本语言,特别适合Web开发。全球有超过80%的网站使用PHP作为服务器端编程语…...

【线程】POSIX信号量---基于环形队列的生产消费者模型
信号量概念 这篇文章是以前写的,里面讲了 System V的信号量的概念,POSIX信号量和SystemV信号量作用相同,都是用于同步操作,达到无冲突的访问共享资源目的。 但POSIX可以用于线程间同步。 信号量的概念 POSIX信号量的接口 初始化…...

Excel 设置自动换行
背景 版本:office 专业版 11.0 表格内输入长信息,发现默认状态时未自动换行的,找了很久设置按钮,遂总结成经验帖。 操作 1)选中需设置的单元格/区域/行/列。 2)点击【开始】下【对齐方式】中的【自动换…...

UNI-SOP使用说明
UNI-SOP提供了两个集成客户端:SpringBoot2.x/JAVA1.8和SpringBoot3.x/JAVA17,满足不同项目的集成需求。 平台接入 使用UNI-SOP之前,业务平台需要进行接入,完成校验后才能正常使用,先引入客户端开发SKD包。 <depen…...

记录-java web 生成并下载zip文件
java生成zip文件,zip文件分两种:一种是包含文件夹、一种是不包含文件夹 生成zip文件的方式 ZipOutputStream zipOutputStream new ZipOutputStream(response.getOutputStream());// 文件夹名称String folder "download/";ZipEntry ze new Z…...

大数据集群部署文档
大数据集群部署文档 注意:需配合大数据集群启动&检查文档进行部署,以便可以检验每一个组件是否部署成功。 文章目录 大数据集群部署文档一、部署前准备1. 确保所有机器可以访问外网2. 配置root用户ssh连接3. 解决Vmware ESXi 6.5 Ubuntu虚拟机ssh连…...

HTML中的表单(超详细)
一、表单 1.语法 <!-- action:提交的地方 method:提交的方式(get会显示,post不会) --> <form action"#" method"get"><p>名字:<input name"name" ty…...

初识 C 语言(一)
目录 一、 第一个 C 程序1. printf() 函数和 stdio.h 头文件2. main() 函数和 return 语句 二、类型和变量1. C 语言中的基本类型2. 变量的创建和命名规则3. 类型和变量的大小 三、printf() 函数和 scanf() 函数1. printf() 函数的使用2. 各种类型的输出格式3. scanf() 函数的使…...

LiveNVR监控流媒体Onvif/RTSP功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大
LiveNVR监控流媒体Onvif/RTSP功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、视频广场2、录像回看3、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、视频广场 视频广场 -》播放 ,左键单击可以拉取矩形框,放大选中的范围ÿ…...

element ui中当el-dialog需要做全屏时,.fullscreen样式修改问题
element ui 饿了么UI中el-dialog样式修改问题 场景解决方法就是:去掉底部样式中的scoped,然后再进行页面级样式的更改即可。 场景 最近在使用element-ui时,使用到了弹窗组件: element-ui 官网链接地址: element-ui 官网链接地址…...

C++的明星之我是类001
文章目录 类类定义格式访问限定符类域 实例化实例化概念对象大小 this指针两道nt题目题目一题目二 C和C语言实现stack对比 类 类定义格式 新增一个关键字class,后加上类的名字,{}中为类的主体,类中的函数称为类的⽅法或者成员函数定义在类⾯…...

深度学习与应用:行人跟踪
**实验 深度学习与应用:行人跟踪 ** ------ **1、 实验目的** ------ - 了解行人跟踪模型基础处理流程 - 熟悉行人跟踪模型的基本原理 - 掌握 行人跟踪模型的参数微调训练以及推理的能力 - 掌握行人跟踪模型对实际问题的应用能力,了解如何在特定的场景和…...

MySQL | DATE_ADD()函数
题1: 现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率。请你取出相应数据。 示例:question_practice_detail iddevice_idquest_idresultdate12138111wrong2021-05-0323214112wrong2021-05-0933214113wrong2021-06-1546543111right2021…...

DVWA 靶场环境搭建
作者:程序那点事儿 日期:2024/09/15 09:30 什么是DVWA: 是OWSASP官方编写的PHP网站,包含了各种网站常见漏洞(漏洞靶场),可以学习攻击及修复方式。 PHP环境包含了,Windows/Apache/Mysql/Php g…...

Autosar学习----AUTOSAR_SWS_BSWGeneral(七)
💥💥🔍 🔍 欢迎来到本博客❤️❤️💥💥 🐡优势:❤️博客内容尽量做到通俗易懂,逻辑清晰。 ⛳️座右铭:恒心,耐心,静心。 ⛳️ 欢迎一起…...

自动化测试框架集成:将Selenium集成到pytest与unittest中
目录 引言 一、Selenium简介 二、Selenium与pytest的集成 1. 安装pytest和Selenium 2. 编写测试用例 3. 运行测试 三、Selenium与unittest的集成 1. 编写测试类 2. 运行测试 四、Selenium自动化测试的最佳实践 1. 使用Page Object模式 2. 合理利用等待机制 3. 跨浏…...

华为GaussDB数据库(单机版)在ARM环境下的安装指南
一、软件版本 机器配置:8核16G,CPU: Huawei Kunpeng 920 2.9GHz操作系统:EulerOS 2.8 64bit with ARM数据库版本:GaussDB Kernel 505.1.0 build 44f4fa53 二、部署流程 2.1 新建用户 ① 以omm用户为例,添加一个omm用…...

计算机网络笔记002
### 课堂讨论对话 **学生A**: 老师,计算机网络的组成是怎样的?🤔 **老师**: 非常好的问题!计算机网络主要由硬件、软件和通信协议三部分组成。我们先从硬件开始讨论吧。 **学生B**: 硬件包括哪些设备呢?ὠ…...

Unity 的Event的Use()方法
对于Event的Use方法,其在调用后将不会再判断同类型的事件 这种情况下,第二个MosueDown不会进入,因为已经Use 如果把Use注释掉 依旧能进入第二个MosueDown 也就是说当使用了Use方法,相同的事件类型不会进第二遍...