学习笔记 ---- 数论分块(整除分块)

news2024/9/22 9:39:51

文章目录

算法

概述

数论分块可以快速计算一些含有除法向下取整的和式(即形如 ∑ i = 1 n f ( i ) g ( ⌊ n i ⌋ ) \sum_{i = 1}^{n}f(i)g(\left \lfloor \frac{n}{i}\right \rfloor) i=1nf(i)g(in))。当可以在 O ( 1 ) O(1) O(1) 或者 O ( l o g 2 n ) O(log_2n) O(log2n) 的复杂度内计算 f ( r ) − f ( l ) f(r) - f(l) f(r)f(l)时,数论分块就能在 O ( n ) O(\sqrt{n}) O(n ) O ( n l o g 2 n ) O(\sqrt{n}log_2n) O(n log2n) 的复杂度内计算出上述和式的值。

它主要利用了富比尼定理(其实没啥用,不需要懂)。核心想法是 ⌊ n i ⌋ \left \lfloor \frac{n}{i} \right \rfloor in 相同的数打包同时计算

引理

引理 1 1 1

∀ a , b , c ∈ Z , ⌊ a b c ⌋ = ⌊ ⌊ a b ⌋ c ⌋ \forall a,b,c \in Z,\left \lfloor \frac{a}{bc} \right \rfloor = \left \lfloor \frac{\left \lfloor \frac{a}{b} \right \rfloor}{c} \right \rfloor a,b,cZbca=cba

证明:
a b = ⌊ a b ⌋ + r ( 0 < r < 1 ) \frac{a}{b} = \left \lfloor \frac{a}{b} \right \rfloor + r(0 < r < 1) ba=ba+r(0<r<1)
⌊ a b c ⌋ = ⌊ a b c ⌋ = ⌊ ⌊ a b ⌋ c + r c ⌋ \left \lfloor \frac{a}{bc} \right \rfloor = \left \lfloor \frac{\frac{a}{b}}{c} \right \rfloor = \left \lfloor \frac{\left \lfloor \frac{a}{b} \right \rfloor}{c} + \frac{r}{c} \right \rfloor bca=cba=cba+cr
⌊ a b ⌋ = p c + q ( 0 ≤ q < c ) \left \lfloor \frac{a}{b} \right \rfloor = pc + q(0 \leq q<c) ba=pc+q(0q<c)
q + r < c q + r < c q+r<c
⌊ ⌊ a b ⌋ c + r c ⌋ = ⌊ p + q + r c ⌋ = p = ⌊ ⌊ a b ⌋ c ⌋ \left \lfloor \frac{\left \lfloor \frac{a}{b} \right \rfloor}{c} + \frac{r}{c} \right \rfloor = \left \lfloor p + \frac{q + r}{c} \right \rfloor = p = \left \lfloor \frac{\left \lfloor \frac{a}{b} \right \rfloor}{c} \right \rfloor cba+cr=p+cq+r=p=cba

引理 2 2 2

∀ n ∈ N ∗ , ∣ { ⌊ n d ⌋ ∣ d ∈ N ∗ , d ≤ n } ∣ ≤ ⌊ 2 n ⌋ \forall n \in N^{*},|\left \{ \left \lfloor \frac{n}{d} \right \rfloor | d \in N^{*},d \leq n\right \} | \leq \left \lfloor 2\sqrt{n} \right \rfloor nN,{dndN,dn}2n

证明:
对于 d ≤ ⌊ n ⌋ d \leq \left \lfloor \sqrt{n} \right \rfloor dn ⌊ n d ⌋ \left \lfloor \frac{n}{d} \right \rfloor dn 最多有 ⌊ n ⌋ \left \lfloor \sqrt{n} \right \rfloor n 种取值。
对于 d > ⌊ n ⌋ d > \left \lfloor \sqrt{n} \right \rfloor d>n ⌊ n d ⌋ \left \lfloor \frac{n}{d} \right \rfloor dn 最多有 ⌊ n ⌋ \left \lfloor \sqrt{n} \right \rfloor n 种取值。

综上,的证。

数论分块结论(区间右端点公式)

对于常数 n n n,使得式子 ⌊ n i ⌋ = ⌊ n j ⌋ \left \lfloor \frac{n}{i} \right \rfloor = \left \lfloor \frac{n}{j} \right \rfloor in=jn 成立,且 i ≤ j ≤ n i \leq j \leq n ijn 的最大的 j j j ⌊ n ⌊ n i ⌋ ⌋ \left \lfloor \frac{n}{\left \lfloor \frac{n}{i} \right \rfloor}\right \rfloor inn。即 i i i 所在的区间的右端点为 ⌊ n ⌊ n i ⌋ ⌋ \left \lfloor \frac{n}{\left \lfloor \frac{n}{i} \right \rfloor}\right \rfloor inn

证明:
⌊ n i ⌋ = k \left \lfloor \frac{n}{i} \right \rfloor = k in=k
j × k ≤ n j \times k \leq n j×kn
由于 j ∈ N ∗ j \in N^{*} jN,则 j ≤ ⌊ n k ⌋ = ⌊ n ⌊ n i ⌋ ⌋ j \leq \left \lfloor \frac{n}{k} \right \rfloor = \left \lfloor \frac{n}{\left \lfloor \frac{n}{i} \right \rfloor} \right \rfloor jkn=inn

得证。

过程

数论分块的过程大概如下:
考虑和式: ∑ i = 1 n f ( i ) g ( ⌊ n i ⌋ ) \sum_{i = 1}^{n} f(i)g(\left \lfloor \frac{n}{i} \right \rfloor) i=1nf(i)g(in)
那么由于 ⌊ n i ⌋ \left \lfloor \frac{n}{i} \right \rfloor in 呈现块状分布,相同的值对应的 i i i 是连续的一段。因此这一段内 g ( ⌊ n i ⌋ ) g(\left \lfloor \frac{n}{i} \right \rfloor) g(in) 也是相等的。我们求出一段的 f f f 和,乘上对应的 g g g,就能算出一段的和。然后根据 右端点公式 跳到下一段的开头即可。由引理 2 2 2 我们知道了总段数不会超过 ⌊ 2 n ⌋ \left \lfloor 2\sqrt{n} \right \rfloor 2n ,因此复杂度是 O ( n ) O(\sqrt{n}) O(n ) 的。

模版代码:

int calc(int n) {
	int l = 1, r, res = 0;
	while(l <= n) {
		r = (n / (n / l)); // r为l所在段的右端点 
		res += (pre[r] - pre[l - 1]) * g[n / l]; // pre[i] = f[1] + f[2] + ... + f[i]
		l = r + 1;
	}
	return res;
}

N N N 维数论分块

什么是多维数论分块?
我们首先考虑一个和式:

∑ i = 1 m i n ( n , m ) f ( i ) g ( ⌊ n i ⌋ ) h ( ⌊ m i ⌋ ) \sum_{i = 1}^{min(n, m)}f(i)g(\left \lfloor \frac{n}{i} \right \rfloor)h(\left \lfloor \frac{m}{i} \right \rfloor) i=1min(n,m)f(i)g(in)h(im)

我们发现式子中分母有两种: n n n m m m。这时候我们把 ⌊ n i ⌋ \left \lfloor \frac{n}{i} \right \rfloor in ⌊ m i ⌋ \left \lfloor \frac{m}{i} \right \rfloor im 用线段图画出来,一条线段内的 i i i 表示 ⌊ n i ⌋ \left \lfloor \frac{n}{i} \right \rfloor in 的值相等。如下图:
在这里插入图片描述
然后我们把两条线段的所有端点拿出来作为划分整个序列的断点,如下图:

在这里插入图片描述
不难发现,此时序列里每一段中 ⌊ n i ⌋ \left \lfloor \frac{n}{i} \right \rfloor in 都相等, ⌊ m i ⌋ \left \lfloor \frac{m}{i} \right \rfloor im 也相等,因此我们又可以一次计算一整段的和了。但是要乘一个 2 2 2 的常数。(因为断点数乘 2 2 2,所以段数多了一倍)

上面的就算是 二维数论分块维度数 实际上就是 不同的分子数 n n n 维数论分块的复杂度是 O ( n n ) O(n\sqrt{n}) O(nn ) 的。但是一般二维数论分块最常见。

二维数论分块模版:

int calc(int n, int m) {
	int t = min(n, m);
	int l = 1, r, res = 0;
	while(l <= t) {
		r = min({n / (n / l), m / (m / l), t});
		res += (pre[r] - pre[l - 1]) * g[n / l] * h[m / l];
		l = r + 1;
	}
	return res;
}

n n n 维数论分块模版:

int calc(int n) {
	int t = a[1];
	int l = 1, r, res = 0;
	for(int i = 1; i <= n; i ++ ) t = min(t, a[i]);
	while(l <= t) {
		r = t;
		for(int i = 1; i <= n; i ++ ) {
			r = min(r, a[i] / (a[i] / l));
		}
		int tmp = pre[r] - pre[l - 1];
		for(int i = 1; i <= n; i ++ ) {
			tmp = tmp * f[i][a[i] / l];
		}
		res += tmp;
		l = r + 1;
	}
	return res;
}

向上取整的数论分块

与向下取整十分相似。核心思路相同,但是需要重新推导右端点公式。

结论:
对于常数 n n n,使得 ⌈ n i ⌉ = ⌈ n j ⌉ \left \lceil \frac{n}{i} \right \rceil = \left \lceil \frac{n}{j} \right \rceil in=jn 成立并且满足 i ≤ j ≤ n i \leq j \leq n ijn 的最大的 j j j ⌊ n − 1 ⌊ n − 1 i ⌋ ⌋ \left \lfloor \frac{n - 1}{\left \lfloor \frac{n - 1}{i} \right \rfloor} \right \rfloor in1n1,即 i i i 所在块的右端点为 ⌊ n − 1 ⌊ n − 1 i ⌋ ⌋ \left \lfloor \frac{n - 1}{\left \lfloor \frac{n - 1}{i} \right \rfloor} \right \rfloor in1n1

证明:

不难发现 ⌈ n i ⌉ = ⌊ n − 1 i ⌋ + 1 \left \lceil \frac{n}{i} \right \rceil = \left \lfloor \frac{n - 1}{i} \right \rfloor + 1 in=in1+1
这个可以讨论 n n n 是否是 i i i 的倍数来证明。
然后把 ⌈ n i ⌉ \left \lceil \frac{n}{i} \right \rceil in ⌈ n j ⌉ \left \lceil \frac{n}{j} \right \rceil jn 分别换成 ⌊ n − 1 i ⌋ + 1 \left \lfloor \frac{n - 1}{i} \right \rfloor + 1 in1+1 ⌊ n − 1 j ⌋ + 1 \left \lfloor \frac{n - 1}{j} \right \rfloor + 1 jn1+1 然后就跟向下取整是一样的了。

注意:当 i = n i = n i=n 时会出现分母为 0 0 0 的情况,需要特殊处理。

例题

H ( n ) H(n) H(n)

题意: 给你 n n n,求 ∑ i = 1 n ⌊ n i ⌋ \sum_{i = 1}^{n} \left \lfloor \frac{n}{i} \right \rfloor i=1nin

分析:没什么好说的,数论分块板子题。
CODE:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int T, n;
LL calc(int n) {
	int l = 1, r; LL res = 0;
	while(l <= n) {
		r = n / (n / l);
		res += 1LL * (r - l + 1LL) * (n / l);
		l = r + 1;
	}
	return res;
}
int main() {
	scanf("%d", &T);
	while(T -- ) {
		scanf("%d", &n);
		printf("%lld\n", calc(n));
	}
	return 0;
}

[CQOI2007] 余数求和

点这里
题意: 给出正整数 n n n k k k。求 G ( n , k ) = ∑ i = 1 n k   m o d   i G(n, k) = \sum_{i = 1}^{n} k \ mod \ i G(n,k)=i=1nk mod i 1 ≤ n , k ≤ 1 0 9 1 \leq n,k \leq 10^9 1n,k109

分析:
G ( n , k ) = ∑ i = 1 n k − i × ⌊ k i ⌋ = n × k − ∑ i = 1 n i × ⌊ k i ⌋ G(n, k) = \sum_{i = 1}^{n} k - i\times \left \lfloor \frac{k}{i} \right \rfloor = n\times k - \sum_{i = 1}^{n} i \times \left \lfloor \frac{k}{i} \right \rfloor G(n,k)=i=1nki×ik=n×ki=1ni×ik

然后一维数论分块即可。复杂度 O ( m i n ( n , k ) ) O(\sqrt{min(n, k)}) O(min(n,k) )

CODE:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL n, k, res;
int main() {
	cin >> n >> k;
	res = n * k;
	LL l = 1, r;
	while(l <= min(n, k)) {
		r = min(n, k / (k / l));
		res = res - (r - l + 1LL) * (l + r) / 2LL * (k / l);
		l = r + 1LL;
	}
	cout << res << endl;
	return 0;
}

[清华集训2012] 模积和

点这里

题意: 求 ∑ i = 1 n ∑ j = 1 m ( n   m o d   i ) × ( m   m o d   j ) , i ≠ j \sum_{i = 1}^{n} \sum_{j = 1}^{m} (n \ mod \ i) \times (m \ mod \ j), i \ne j i=1nj=1m(n mod i)×(m mod j),i=j。对 19940417 19940417 19940417 取模。

1 ≤ n , m ≤ 1 0 9 1 \leq n,m \leq 10^9 1n,m109

分析:
简单题。
首先通过容斥满足 i ≠ j i \ne j i=j 的限制,答案就是:

∑ i = 1 n ∑ j = 1 m ( n   m o d   i ) × ( m   m o d   j ) − s u m i = 1 m i n ( n , m ) ( n   m o d   i ) × ( m   m o d   i ) \sum_{i = 1}^{n} \sum_{j = 1}^{m}(n \ mod \ i) \times (m \ mod \ j) - sum_{i = 1}^{min(n, m)}(n \ mod \ i) \times (m \ mod \ i) i=1nj=1m(n mod i)×(m mod j)sumi=1min(n,m)(n mod i)×(m mod i)

分开开两个式子。
对于左边:
∑ i = 1 n ∑ j = 1 m ( n   m o d   i ) × ( m   m o d   j ) \sum_{i = 1}^{n} \sum_{j = 1}^{m} (n \ mod \ i) \times (m \ mod \ j) i=1nj=1m(n mod i)×(m mod j)
= ∑ i = 1 n ∑ j = 1 m ( n − i × ⌊ n i ⌋ ) × ( m − j × ⌊ m j ⌋ ) = \sum_{i = 1}^{n}\sum_{j = 1}^{m}(n - i\times \left \lfloor \frac{n}{i} \right \rfloor) \times (m - j\times \left \lfloor \frac{m}{j} \right \rfloor) =i=1nj=1m(ni×in)×(mj×jm)
= s u m i = 1 n ∑ j = 1 m n m − n j × ⌊ m j ⌋ − m i × ⌊ n i ⌋ + i j × ⌊ n i ⌋ × ⌊ m j ⌋ = sum_{i = 1}^{n}\sum_{j = 1}^{m} nm - nj \times \left \lfloor \frac{m}{j} \right \rfloor - mi \times \left \lfloor \frac{n}{i} \right \rfloor + ij \times \left \lfloor \frac{n}{i} \right \rfloor \times \left \lfloor \frac{m}{j} \right \rfloor =sumi=1nj=1mnmnj×jmmi×in+ij×in×jm
= n 2 m 2 − n 2 ∑ j = 1 m j × ⌊ m j ⌋ − m 2 ∑ i = 1 n i × ⌊ n i ⌋ + ∑ i = 1 n ( i × ⌊ n i ⌋ ) × ∑ j = 1 m ( j × ⌊ m j ⌋ ) =n^2m^2 -n^2\sum_{j = 1}^{m}j\times \left \lfloor \frac{m}{j} \right \rfloor - m^2\sum_{i = 1}^{n}i\times \left \lfloor \frac{n}{i} \right \rfloor + \sum_{i = 1}^{n}(i \times\left \lfloor \frac{n}{i} \right \rfloor) \times \sum_{j = 1}^{m}(j \times \left \lfloor \frac{m}{j} \right \rfloor) =n2m2n2j=1mj×jmm2i=1ni×in+i=1n(i×in)×j=1m(j×jm)

化简到这一步后,显然每一个求和符号都可以用数论分块在 O ( n ) O(\sqrt{n}) O(n ) 的时间内求出。

再看右边:
∑ i = 1 m i n ( n , m ) ( n   m o d   i ) × ( m   m o d   i ) \sum_{i = 1}^{min(n, m)}(n \ mod \ i) \times (m \ mod \ i) i=1min(n,m)(n mod i)×(m mod i)
= ∑ i = 1 m i n ( n , m ) ( n − i × ⌊ n i ⌋ ) × ( m − i × ⌊ m i ⌋ ) = \sum_{i = 1}^{min(n, m)}(n - i \times\left \lfloor \frac{n}{i} \right \rfloor) \times (m - i \times \left \lfloor \frac{m}{i} \right \rfloor) =i=1min(n,m)(ni×in)×(mi×im)
m i n ( n , m ) = t min(n, m) = t min(n,m)=t,则原式
= ∑ i = 1 t n m − n i × ⌊ m i ⌋ − m i × ⌊ n i ⌋ + i 2 × ⌊ n i ⌋ × ⌊ m i ⌋ =\sum_{i = 1}^{t}nm - ni \times \left \lfloor \frac{m}{i} \right \rfloor - mi \times \left \lfloor \frac{n}{i} \right \rfloor + i^2 \times \left \lfloor \frac{n}{i} \right \rfloor \times \left \lfloor \frac{m}{i} \right \rfloor =i=1tnmni×immi×in+i2×in×im
= n m t − n × ∑ i = 1 t i × ⌊ m i ⌋ − m × ∑ i = 1 t i × ⌊ m i ⌋ + ∑ i = 1 t i 2 × ⌊ m i ⌋ × ⌊ n i ⌋ =nmt - n\times \sum_{i = 1}^{t}i\times \left \lfloor \frac{m}{i} \right \rfloor - m \times \sum_{i = 1}^{t} i \times \left \lfloor \frac{m}{i} \right \rfloor + \sum_{i = 1}^{t} i^2 \times \left \lfloor \frac{m}{i} \right \rfloor \times \left \lfloor \frac{n}{i} \right \rfloor =nmtn×i=1ti×imm×i=1ti×im+i=1ti2×im×in

然后就是前两个求和符号非常简单,直接一维整除分块即可。最后一个求和符号需要二维整除分块,并且还需要快速计算出 ∑ i = l r i 2 \sum_{i = l}^{r} i^2 i=lri2

f ( r ) = ∑ i = 1 r i 2 f(r) = \sum_{i = 1}^{r} i^2 f(r)=i=1ri2,那么 s u m i = l r i 2 = f ( r ) − f ( l − 1 ) sum_{i = l}^{r}i^2 = f(r) - f(l - 1) sumi=lri2=f(r)f(l1)。然后就是有一个公式:
∑ i = 1 n i 2 = n × ( n + 1 ) × ( 2 n + 1 ) 6 \sum_{i = 1}^{n}i^2 = \frac{n \times (n + 1) \times (2n + 1)}{6} i=1ni2=6n×(n+1)×(2n+1)。有了这个我们就可以 O ( 1 ) O(1) O(1) 求出 f f f 了,这样这个题就做完了。

时间复杂度 O ( n ) O(\sqrt{n}) O(n )

CODE:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod = 19940417;
LL n, m, res;
inline LL get(LL x, LL y) { // x 是循环上界,y是分子 
	LL l = 1, r; LL res = 0;
	while(l <= x) {
		r = min(x, y / (y / l));
		res = (res + 1LL * ((l + r) * (r - l + 1LL) / 2LL) % mod * (y / l) % mod) % mod;
		l = r + 1LL;
	}
	return res;
}
LL solve(LL n) { // \sum_{i = 1}^{n} i^2
    LL x = n, y = n + 1LL, z = 2LL * n + 1LL;
    if(x % 2 == 0) x /= 2LL;
    else if(y % 2 == 0) y /= 2LL;
    else z /= 2LL;
    if(x % 3 == 0) x /= 3LL;
    else if(y % 3 == 0) y /= 3LL;
    else z /= 3LL;
	return x * y % mod * z % mod;
}
inline LL calc(LL t, LL n, LL m) { // 二维数论分块, t是上界 
	LL l = 1, r; LL res = 0;
	while(l <= t) {
		r = min({t, n / (n / l), m / (m / l)});
		res = (res + ((solve(r) - solve(l - 1)) % mod + mod) % mod * (n / l) % mod * (m / l) % mod) % mod;
		l = r + 1LL;
	}
	return res;
}
int main() {
	cin >> n >> m;
	LL t1 = ((m * m % mod - get(m, m)) % mod + mod) % mod;
	LL t2 = ((n * n % mod - get(n, n)) % mod + mod) % mod;
	res = t1 * t2 % mod;
	LL t = min(n, m);
	LL del = n * m % mod * t % mod;
	del = ((del - n * get(t, m) % mod) % mod + mod) % mod;
	del = ((del - m * get(t, n) % mod) % mod + mod) % mod;
	del = (del + calc(t, n, m)) % mod;
	res = ((res - del) % mod + mod) % mod;
	cout << res << endl;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2096264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

掌握 SQL 数据操纵的基础技巧

在数据库管理中&#xff0c;SQL 数据操纵语言 (DML) 是至关重要的工具。它主要包括 INSERT、UPDATE 和 DELETE 语句&#xff0c;用于对数据库中的数据进行插入、更新和删除操作。本文将带你快速了解这些基本操作。 插入数据 在创建了一个表之后&#xff0c;最常见的操作就是插…

基于SpringBoot+Vue+MySQL的的宠物商城网站

系统背景 基于SpringBootVueMySQL的宠物商城网站是一个结合了现代Web开发技术的综合性电商平台&#xff0c;专为宠物爱好者及宠物商家设计。该系统背景可以从多个方面来阐述&#xff0c;包括但不限于市场需求、技术选型、用户体验以及平台价值等方面。 1. 市场需求 随着人们生…

python内置模块time详解(我们需要了解的多种时间格式)

Python的time模块提供了各种与时间相关的函数。我们可以获取当前时间、操作时间日期、计算两个时间差等。 时间有两种标准表示法: 数字表示: 整数或浮点数&#xff0c;通常是自从1970年1月1日以来的秒数。9个整数组成的元组&#xff1a;元组项包含年份&#xff0c;月份&#…

第 4 章 第 4 章 卷积神经网络-datawhale ai夏令营

独热向量 y ′ 的长度决 定了模型可以识别出多少不同种类的东西。我们希望 y ′ 和 yˆ 的交叉熵越小越好。 为了避免过拟合&#xff0c;在做图像识别的时候&#xff0c;考虑到图像本身的特性&#xff0c;并不一定 需要全连接&#xff0c;即不需要每个神经元跟输入的每个维度都…

进程通信——消息队列

文章目录 1.概念1.0 IPC1.1 什么是消息队列1.2 消息队列工作机制1.3 消息队列与其他进程通信机制的比较&#xff1a; 2.使用System-V版2.1 用户消息缓冲区2.2 创建消息队列msgget2.3 添加消息到消息队列msgsend2.4 从消息队列读取消息、2.5 消息队列的控制函数msgctrl2.6 msqid…

SpringBoot中,启动A服务,naocs却注册B服务,解决思路。

今天遇到了一个令我非常费解的报错&#xff0c;我明明启动的是auth服务&#xff0c;但是nacos愣是给我注册的patient服务&#xff0c;下面看看解决思路&#xff08;虽然我这个问题很乌龙&#xff0c;但如果真的是你的配置有问题&#xff0c;那么这篇文章也是可以帮助到你。&…

开源通用验证码识别OCR —— DdddOcr 源码赏析(二)

文章目录 前言DdddOcr分类识别调用识别功能classification 函数源码classification 函数源码解读1. 分类功能不支持目标检测2. 转换为Image对象3. 根据模型配置调整图片尺寸和色彩模式4. 图像数据转换为浮点数据并归一化5. 图像数据预处理6. 运行模型&#xff0c;返回预测结果 …

如何在Windows和Mac上免费提取RAR文件?这里有方法

序言 你有没有下载过一个文件,却发现它有一个奇怪的.rar文件扩展名?RAR是一种压缩文件格式,与ZIP文件非常相似,在本文中,我们将向你展示如何在Windows或macOS上打开RAR文件。 如何在Windows 11上打开RAR文件 Windows 11在2023年增加了对RAR文件的原生支持。从那时起,你…

前端框架vue3中的条件渲染(v-show,v-if,v-else-if,v-else)

目录 v-show: 需求&#xff1a; v-if 区别与v-show&#xff1a; v-if和v-show的选择&#xff1a; v-else-if和v-else 联合使用&#xff1a; v-show: 部分代码如图&#xff1a; <body><div id"root"><div ><h1>n的值为{{n}}</h1>…

【计算机网络】浏览器输入访问某网址时,后台流程是什么

在访问网址时&#xff0c;后台的具体流程可以因不同的网站、服务器和应用架构而异。 实际过程中可能还涉及更多的细节和步骤&#xff0c;如缓存处理、重定向、负载均衡等。 此外&#xff0c;不同的网站和应用架构可能会有不同的实现方式和优化策略。 部分特定网站或应用&#x…

数据仓库系列19:数据血缘分析在数据仓库中有什么应用?

你是否曾经在复杂的数据仓库中迷失方向&#xff0c;不知道某个数据是从哪里来的&#xff0c;又会流向何方&#xff1f;或者在处理数据质量问题时&#xff0c;无法快速定位根源&#xff1f;如果是这样&#xff0c;那么数据血缘分析将会成为你的得力助手&#xff0c;帮助你在数据…

协议转换桥+高速协议传输终端

多路协议传输终端&#xff08;正在更新&#xff09; 整体框图&#xff08;正在更新&#xff09; 万兆UDP协议栈 整体框图 10G 8b10b phy层设计 整体框图 报文格式

从pdf复制的表格内容粘贴到word或excel表格保持表格格式

对于it工作&#xff0c;硬件和软件&#xff0c;经常需要从pdf复制表格内容到word或excel&#xff0c;但是windows的ctrlc和ctrlv只能复制内容而不能保留表格的格式。 粘贴进word或excel的表格后&#xff0c;不能保持原来表格的排列&#xff0c;特别是word&#xff0c;复制的pdf…

[Leetcode] 接雨水(相向双指针)

可以直接移步大神的解题思路&#xff0c;非常详细 -> 盛最多水的容器 接雨水_哔哩哔哩_bilibili 11. 盛最多水的容器 https://leetcode.cn/problems/container-with-most-water/description/ 42. 接雨水 https://leetcode.cn/problems/trapping-rain-water/description/ 11…

并发编程之LockSupport的 park 方法及线程中断响应

并发编程之LockSupport的 park 方法及线程中断响应-CSDN博客

STM32CubeIDE

文章目录 Stm32CubeIDE开发环境介绍获取路径 新建工程 Stm32CubeIDE 开发环境介绍 也就是说IDE是集合了CubeMX 和MDK5的。 区别&#xff1a; 获取路径 官网&#xff1a;https://www.st.com/en/development-tools/stm32cubeide.html A盘路径&#xff1a;A盘\6&#xff0c;软…

Signed distance fields (SDFs) and Truncated Signed Distance Field(TSDF)

1. Signed distance fields (SDFs) 笔记来源&#xff1a; [1] Signed distance fields (SDFs) [2] Signed Distance Function (SDF): Implicit curves or surfaces [3] Ray Marching and Signed Distance Functions [4] Truncated Signed Distance Function [5] Wiki/Signed d…

个人旅游网(4)——功能详解——收藏功能

文章目录 一、收藏排行榜功能1.1、接口详解1.1.1、findRouteList 二、收藏功能2.1、接口详解2.1.1、find&#xff08;用于判断当前旅游路线是否已被收藏&#xff09;2.1.2、add-favorite&#xff08;用于实现收藏功能&#xff09;2.1.3、remove-favorite&#xff08;用于实现取…

ubuntu20.04搭建kubernetes1.28.13集群配置calico网络插件

写在前面 这里是我在搭建过程中从某站找到的教学视频,搭载的都是最新的,大家可以参考一下 搭建kubernetes集群学习视频: 视频链接。最后面会有我遇见报错信息的所有连接和解决方案,自行查看 不说废话,直接开搭 搭建集群大纲 一、三台虚拟机的初始化 二、三台虚拟机连接…

内存管理篇-19 TLB和Table wake unit

TLB这几节&#xff0c;停下来感觉怪怪的。没有从TLB的引入&#xff0c;工作原理&#xff0c;实际源码应用来深入分析。 TLB 是一种高速缓存&#xff0c;用于存储最近使用的页表项&#xff08;Page Table Entries, PTEs&#xff09;。它的主要目的是加速虚拟地址到物理地址的转换…