T1

TTT 组询问,每组询问给定 n,mn,mn,m,求
(nm)−1⋅∑i=1n∑j=1mlcm⁡(i,j) (nm)^{-1}\cdot\sum_{i=1}^n\sum_{j=1}^m\operatorname{lcm}(i,j) (nm)1i=1nj=1mlcm(i,j)
109+710^9+7109+7 取模。

T≤20000T\le 20000T20000n,m≤107n,m\le 10^7n,m107

把逆元放一边,先把式子化简:
∑i=1n∑j=1mlcm⁡(i,j)=∑i=1n∑j=1mijgcd⁡(i,j)=∑d=1min⁡(n,m)d∑i=1⌊n/d⌋∑j=1⌊m/d⌋ij[gcd⁡(i,j)=1]=∑d=1min⁡(n,m)d∑k=1min⁡(⌊n/d⌋,⌊m/d⌋)k2μ(k)∑i=1⌊n/kd⌋∑j=1⌊m/kd⌋ij \begin{aligned}\sum_{i=1}^n\sum_{j=1}^m\operatorname{lcm}(i,j)&=\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{\gcd(i,j)}\\&=\sum_{d=1}^{\min(n,m)}d\sum_{i=1}^{\lfloor n/d\rfloor}\sum_{j=1}^{\lfloor m/d\rfloor}ij[\gcd(i,j)=1]\\&=\sum_{d=1}^{\min(n,m)}d\sum_{k=1}^{\min(\lfloor n/d\rfloor,\lfloor m/d\rfloor)}k^2\mu(k)\sum_{i=1}^{\lfloor n/kd\rfloor}\sum_{j=1}^{\lfloor m/kd\rfloor}ij\end{aligned} i=1nj=1mlcm(i,j)=i=1nj=1mgcd(i,j)ij=d=1min(n,m)di=1n/dj=1m/dij[gcd(i,j)=1]=d=1min(n,m)dk=1min(⌊n/d,m/d⌋)k2μ(k)i=1n/kdj=1m/kdij
sum⁡(n)=∑i=1n=n(n+1)2\displaystyle \operatorname{sum}(n)=\sum_{i=1}^n=\frac{n(n+1)}{2}sum(n)=i=1n=2n(n+1)
∑d=1min⁡(n,m)d∑k=1min⁡(⌊n/d⌋,⌊m/d⌋)k2μ(k)∑i=1⌊n/kd⌋∑j=1⌊m/kd⌋ij=∑d=1min⁡(n,m)d∑k=1min⁡(⌊n/d⌋,⌊m/d⌋)k2μ(k)sum⁡(⌊n/kd⌋)sum⁡(⌊m/kd⌋)=∑Tsum⁡(⌊n/T⌋)sum⁡(⌊m/T⌋)T2∑d∣Td−1μ(T/d) \begin{aligned}\sum_{d=1}^{\min(n,m)}d\sum_{k=1}^{\min(\lfloor n/d\rfloor,\lfloor m/d\rfloor)}k^2\mu(k)\sum_{i=1}^{\lfloor n/kd\rfloor}\sum_{j=1}^{\lfloor m/kd\rfloor}ij&=\sum_{d=1}^{\min(n,m)}d\sum_{k=1}^{\min(\lfloor n/d\rfloor,\lfloor m/d\rfloor)}k^2\mu(k)\operatorname{sum}(\lfloor n/kd\rfloor)\operatorname{sum}(\lfloor m/kd\rfloor)\\&=\sum_{T}\operatorname{sum}(\lfloor n/T\rfloor)\operatorname{sum}(\lfloor m/T\rfloor)T^2\sum_{d|T}d^{-1}\mu(T/d)\end{aligned} d=1min(n,m)dk=1min(⌊n/d,m/d⌋)k2μ(k)i=1n/kdj=1m/kdij=d=1min(n,m)dk=1min(⌊n/d,m/d⌋)k2μ(k)sum(⌊n/kd⌋)sum(⌊m/kd⌋)=Tsum(⌊n/T⌋)sum(⌊m/T⌋)T2dTd1μ(T/d)
考虑 f(T)=∑d∣Td−1μ(T/d)f(T)=\sum_{d|T}d^{-1}\mu(T/d)f(T)=dTd1μ(T/d),可以 O(nlog⁡n)O(n\log n)O(nlogn) 暴力算卷积,也可以推推式子用线性筛做。最后整除分块以下即可。时间复杂度 O(nlog⁡n+Tn)O(n\log n+T\sqrt n)O(nlogn+Tn)O(n+Tn)O(n+T\sqrt n)O(n+Tn)

T2

给定一个长度为 nnn 的数列 a0a_0a0mmm 个二元组,另有 mmm 个数列 a1,⋯ ,ama_1,\cdots,a_ma1,,am,满足对于第 iii 个数列 aia_iai 和第 iii 个二元组 (xi,yi)(x_i,y_i)(xi,yi)(其中 xi∈[1,n]x_i\in[1,n]xi[1,n]),aia_iai 只有第 xix_ixi 个元素与 a0a_0a0 不同且为 yiy_iyi,其余均与 a0a_0a0 相同。你需要选出一个 { 1,2,⋯ ,n }\set{1,2,\cdots,n}{1,2,,n} 的子序列 { p1,p2,⋯ ,pk }\set{p_1,p_2,\cdots,p_k}{p1,p2,,pk},满足 ∀i∈[0,m],j∈[1,k−1]\forall i\in[0,m],j\in[1,k-1]i[0,m],j[1,k1]ai,pj≤ai,pj+1a_{i,p_j}\le a_{i,p_{j+1}}ai,pjai,pj+1。求选出子序列长度的最大值。

1≤n,m≤1051\le n,m\le 10^51n,m1051≤ai,yi≤1051\le a_i,y_i\le 10^51ai,yi105

mxi=max⁡j=0mai,jmx_i=\max_{j=0}^m a_{i,j}mxi=maxj=0mai,jmni=min⁡j=0mai,jmn_i=\min_{j=0}^m a_{i,j}mni=minj=0mai,j,那么两个数 x,yx,yx,yx<yx<yx<y)能同时在 ppp 里当且仅当 mxx≤a0,y,a0,x≤mnymx_x\le a_{0,y}, a_{0,x}\le mn_ymxxa0,y,a0,xmny。考虑 dp,设 f(i)f(i)f(i) 表示当前 p⊆{1,2,⋯ ,i}p\subseteq \{1,2,\cdots,i\}p{1,2,,i}i∈pi\in pip 的最长长度,那么有
f(i)=max⁡j<i,mxj≤a0,i,a0,j≤mnif(j)+1 f(i)=\max_{j<i,mx_j\le a_{0,i},a_{0,j}\le mn_i} f(j)+1 f(i)=j<i,mxja0,i,a0,jmnimaxf(j)+1
可以发现这相当于动态往一个平面直角坐标系的第一象限里加点,点有点权,并且询问一个左下角矩形中点的权值的最大值。直接大力树套树(树状数组套 fhq)即可,当然用 cdq 分治更方便。

#include <bits/stdc++.h>
bool MemoryST; using namespace std;
#define ll long long
#define mk make_pair
#define open(x) freopen(#x".in", "r", stdin), freopen(#x".out", "w", stdout)
#define lowbit(x) ((x) & (-(x)))
#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
#define BCNT __builtin_popcount
#define cost_time (1e3 * clock() / CLOCKS_PER_SEC) << "ms"
#define cost_space (abs(&MemoryST - &MemoryED) / 1024.0 / 1024.0) << "MB"
const int inf = 0x3f3f3f3f; 
const ll linf = 1e18; 
mt19937 rnd(random_device{}());
template<typename T> void chkmax(T& x, T y) { x = max(x, y); }
template<typename T> void chkmin(T& x, T y) { x = min(x, y); }
template<typename T> T abs(T x) { return (x < 0) ? -x : x; }
const int maxn = 1e5 + 5;
int n, m, mn[maxn], mx[maxn], a[maxn];
// 线段树区间 -> mx[j]
// 平衡树区间 -> a[j]
namespace FastIn {int read() {char c = getchar(); int f = 1;for (; c < '0' || c > '9'; c = getchar())if (c == '-') f = -f;int s = 0;for (; c >= '0' && c <= '9'; c = getchar())s = (s << 1) + (s << 3) + (c ^ 48);return s * f;}
} using namespace FastIn;
namespace Structure {const int N = 5e6 + 5;struct Tree {int pos, mx, k, pri; // a[j] 子树最大 自己 优先值int ls, rs, siz;Tree() {ls = rs = siz = 0;}} T[N]; int cnt = 0;void update(int rt) {T[rt].mx = T[rt].k, T[rt].siz = 1;if (T[rt].ls) chkmax(T[rt].mx, T[T[rt].ls].mx), T[rt].siz += T[T[rt].ls].siz;if (T[rt].rs) chkmax(T[rt].mx, T[T[rt].rs].mx), T[rt].siz += T[T[rt].rs].siz;}void split(int rt, int tg, int &l, int &r) {if (rt == 0) return l = r = 0, void(0);if (T[rt].pos <= tg) {l = rt; split(T[rt].rs, tg, T[rt].rs, r);} else r = rt, split(T[rt].ls, tg, l, T[rt].ls);update(rt);}void split1(int rt, int tg, int &l, int &r) {if (rt == 0) return l = r = 0, void(0);if (T[T[rt].ls].siz + 1 <= tg) {l = rt; split1(T[rt].rs, tg - T[T[rt].ls].siz - 1, T[rt].rs, r);} else r = rt, split1(T[rt].ls, tg, l, T[rt].ls);update(rt);}int merge(int l, int r) {if (l == 0 || r == 0) return l | r;if (T[l].pri < T[r].pri) {T[l].rs = merge(T[l].rs, r), update(l);return l;} else {T[r].ls = merge(l, T[r].ls), update(r);return r;}}struct Seg {int root;Seg() { root = 0; }int ask(int K) { // 查 <= K 中最大的if (root == 0) return 0;int l, mid, r; split(root, K, l, r);if (l == 0) return 0;int ans = T[l].mx;root = merge(l, r); return ans;} void insert(int pos, int k) { // 位置在 pos,值为 kint l, mid, r; split(root, pos, l, r), split1(l, T[l].siz - 1, l, mid);if (T[mid].pos == pos) { chkmax(T[mid].k, k), T[mid].mx = T[mid].k;l = merge(l, mid), root = merge(l, r);} else {int now = ++ cnt; T[now].k = T[now].mx = k, T[now].pos = pos;T[now].pri = rnd();mid = merge(mid, now), l = merge(l, mid), root = merge(l, r);}}} seg[maxn];int query(int now, int K) { // mn[i] a[i]int res = 0;for (int i = now; i; i -= lowbit(i))chkmax(res, seg[i].ask(K));return res;} void modify(int now, int pos, int K) { // a[j] mx[j]for (int i = now; i <= 1e5; i += lowbit(i))seg[i].insert(pos, K);}
} using Structure :: query; using Structure :: modify;
namespace Subtask1 {const int N = 5005;bool chk() { return n <= 5000; }int f[N];int main() {f[1] = 1;for (int i = 2; i <= n; i ++) {f[i] = 1;for (int j = 1; j < i; j ++) if (a[j] <= mn[i] && mx[j] <= a[i])chkmax(f[i], f[j] + 1);} int ans = 0;for (int i = 1; i <= n; i ++) chkmax(ans, f[i]);printf("%d\n", ans);return 0;} 
}
bool MemoryED; int main() { // open(3);n = read(), m = read();for (int i = 1; i <= n; i ++)a[i] = read(), mn[i] = mx[i] = a[i];for (int i = 1; i <= m; i ++) {int x, y; x = read(), y = read();chkmax(mx[x], y), chkmin(mn[x], y);} if (Subtask1 :: chk()) return Subtask1 :: main();modify(a[1], mx[1], 1);for (int i = 2; i <= n; i ++) {int now = query(mn[i], a[i]) + 1;// cout << now << '\n';modify(a[i], mx[i], max(1, now));} printf("%d\n", query(1e5, 1e5));return 0;
} 

赛时用的线段树被卡常了(悲

T3

给定一棵 nnn 个点的树,每个点有 1/21/21/2 的概率是关键点,求连通这些关键点的最小连通块的边数的 kkk 次幂的期望,对 109+710^9+7109+7 取模。

1≤n≤1051\le n\le 10^51n1051≤k≤2001\le k\le 2001k200

首先把答案乘 2n2^n2n,问题变成算所有可能的连通块的边数的 kkk 次幂的和。先考虑给定一组关键点,有没有什么简单的方法快速判断每条边是否在形成的连通块里。考虑将原树钦定一个根,那么我们可以找一个点 uuu 作为连通块的根,使得所有关键点都在它的子树里;对于所有在 uuu 的子树中不是 uuu 的节点 vvv,它和它父亲的连边在连通块中当且仅当 vvv 的子树中有关键点。这样计数要求 uuu 必须确实在连通块里,否则形成的连通块就不是边数最少的。

那么我们考虑枚举每个点 uuu 作为连通块的根时对答案的贡献(此时 uuu 一定在连通块里,但是不一定是关键点,因此当 uuu 不是关键点时,有些关键点形成的连通块实际上不包含 uuu)。考虑逐个枚举 uuu 的孩子 vvv,将 vvv 作为根的答案合并进 uuu 中。先考虑怎么更新新连通块的边数的 kkk 次幂,假设枚举到 vvv,在把包含 vvv 的连通块加进包含 uuu 的连通块之前连通块中有 aaa 条边,vvv 自己有 bbb 条边;那么把 vvv 合并进来后总共有 a+b+1a+b+1a+b+1 条边(加的 111 是连接 u,vu,vu,v 的边),此时的贡献为 (a+b+1)k=∑i=0k(ki)ai(b+1)k−i(a+b+1)^k=\sum_{i=0}^k \binom kia^i(b+1)^{k-i}(a+b+1)k=i=0k(ik)ai(b+1)ki,也就是我们要维护不同次幂下的边数和。

我们设 f(u,k)f(u,k)f(u,k) 表示所有以 uuu 为根的所有连通块的边数的 kkk 次幂的和(uuu 是或不是关键点都计算在内,也会包括 uuu 一个点单独作为一个连通块的情况,此时显然 uuu 必为关键点)。特别地,当 uuu 为叶子节点的时候连通块边数为 000,此时 f(u,0)=00f(u,0)=0^0f(u,0)=00;不过考虑 (x+0)k=∑i=0k(ki)0ixi−k(x+0)^k=\sum_{i=0}^k \binom ki0^ix^{i-k}(x+0)k=i=0k(ik)0ixik 仅当 000^000111 的时候成立,于是我们令 f(u,0)=1f(u,0)=1f(u,0)=1(这一点非常重要)。

一样考虑枚举孩子 vvv,令 g(v,k)g(v,k)g(v,k) 表示以 uuu 为根的所有连通块的边数加一kkk 次幂,那么根据 (b+1)k=∑i=0k(ki)bk(b+1)^k=\sum_{i=0}^k\binom{k}{i}b^k(b+1)k=i=0k(ik)bk,有 g(v,k)=∑i=0k(ki)f(v,i)g(v,k)=\sum_{i=0}^k\binom kif(v,i)g(v,k)=i=0k(ik)f(v,i);根据 (a+b+1)k=∑i=0k(ki)ai(b+1)k−i(a+b+1)^k=\sum_{i=0}^k\binom kia^i(b+1)^{k-i}(a+b+1)k=i=0k(ik)ai(b+1)ki,假设 f′f'f 是我们想得到的加入 vvv 后新的数组,那么 f′(u,k)=f(u,k)+g(v,k)+∑i=0k(ki)f(u,i)g(v,k−i)f'(u,k)=f(u,k)+g(v,k)+\sum_{i=0}^k\binom ki f(u,i)g(v,k-i)f(u,k)=f(u,k)+g(v,k)+i=0k(ik)f(u,i)g(v,ki)

  • 不妨从 uuu 合并第一个孩子 vvv 的答案开始考虑,此时对于所有 k>0k>0k>0f(u,k)f(u,k)f(u,k) 均为 000 但是 f(u,0)=1f(u,0)=1f(u,0)=1,合并的式子就是 f′(u,k)=g(v,k)+g(v,k)f'(u,k)=g(v,k)+g(v,k)f(u,k)=g(v,k)+g(v,k),这样非常巧妙处理了 uuu 是或不是关键点的情况。再看 f′(u,0)f'(u,0)f(u,0) 的更新,可以发现 f′(u,0)=1+g(v,0)+g(v,0)f'(u,0)=1+g(v,0)+g(v,0)f(u,0)=1+g(v,0)+g(v,0),也即 uuu 单独一个点作为连通块(此时必须要求 uuu 是关键点)、uuu 是或不是关键点连上 vvv 的连通块作为一个大连通块。实际上当 uuu 不是关键点时连上 vvv 的连通块是不合法,但是为了后面统计贡献我们不立即删除。
  • 接下来的每次合并,f′(u,k)=f(u,k)+g(v,k)+∑i=0k(ki)f(u,i)g(v,k−i)f'(u,k)=f(u,k)+g(v,k)+\sum_{i=0}^k\binom{k}{i}f(u,i)g(v,k-i)f(u,k)=f(u,k)+g(v,k)+i=0k(ik)f(u,i)g(v,ki) 中,f(u,k)f(u,k)f(u,k) 相当于之前的贡献,g(v,k)g(v,k)g(v,k) 相当于 uuu 不是关键点时 vvvuuu 合并成连通块的贡献,后面二项式定理合并的部分相当于 vvv 的连通块和 uuu 之前的连通块进行组合(uuu 单独作为连通块也算在内,此时就很好处理了 uuu 是或不是关键点与 vvv 合并的贡献)。

做完这些合并之后我们考虑删除之前 uuu 是非关键点时错误连通块的贡献,总共需要删掉所有孩子 vvvg(v,k)g(v,k)g(v,k)注意是把整棵树都做完一遍 dp 后再删贡献,因为 uuu 作为非关键点连单独一个子树作为连通块,再连到其祖先上也是一种合法情况。

这么进行树形 dp 的时间复杂度是 O(nk2)O(nk^2)O(nk2) 的,不足以通过本题。

考虑将通常幂转下降幂,即维护一个新的 F(v,k)F(v,k)F(v,k) 表示所有以 uuu 为根的所有连通块的边数的 kkk下降幂的和,G(v,k)G(v,k)G(v,k) 的定义同理。先考虑把 F(v,k)F(v,k)F(v,k) 变成 G(v,k)G(v,k)G(v,k),考虑二项式定理的下降幂版本 (x+y)k‾=∑i=0k(ki)xi‾yk−i‾(x+y)^{\underline k}=\sum_{i=0}^k\binom{k}{i}x^{\underline{i}}y^{\underline{k-i}}(x+y)k=i=0k(ik)xiyki,带入 x=b,y=1x=b,y=1x=b,y=1(b+1)k‾=∑i=0k(ki)1i‾bk−i‾(b+1)^{\underline{k}}=\sum_{i=0}^k\binom ki1^{\underline i}b^{\underline{k-i}}(b+1)k=i=0k(ik)1ibki,我们发现 111 的下降幂下降两次变成 000 了没了!于是有 (b+1)k‾=bk‾+[k>0]kbk−1‾(b+1)^{\underline k}=b^{\underline k}+[k>0]kb^{\underline {k-1}}(b+1)k=bk+[k>0]kbk1,所以 G(v,k)=F(v,k)+[k>0]kF(v,k−1)G(v,k)=F(v,k)+[k>0]kF(v,k-1)G(v,k)=F(v,k)+[k>0]kF(v,k1)

再考虑合并 G(v,k)G(v,k)G(v,k),接着带入 (a+b+1)k‾=∑i=0k(ki)ai‾(b+1)k−i‾(a+b+1)^{\underline k}=\sum_{i=0}^k\binom kia^{\underline i}(b+1)^{\underline{k-i}}(a+b+1)k=i=0k(ik)ai(b+1)ki 得到 F′(u,k)=F(u,k)+G(v,k)+∑i=0k(ki)F(u,k−i)G(v,i)F'(u,k)=F(u,k)+G(v,k)+\sum_{i=0}^k\binom kiF(u,k-i)G(v,i)F(u,k)=F(u,k)+G(v,k)+i=0k(ik)F(u,ki)G(v,i) 基本上不变,那哪里能优化呢?

所以就做完了。核心是考虑 aa‾=0a^{\underline a}=0aa=0

第二类斯特林数递推:考虑 {nk}={n−1k−1}+k{n−1k}\left\{\begin{matrix}n\\k\end{matrix}\right\}=\left\{\begin{matrix}n-1\\k-1\end{matrix}\right\}+k\left\{\begin{matrix}n-1\\k\end{matrix}\right\}{nk}={n1k1}+k{n1k},边界即为 {n0}=0\left\{\begin{matrix}n\\0\end{matrix}\right\}=0{n0}=0

int C[maxk][maxk], S[maxk][maxk], siz[maxn];
void init() {C[0][0] = S[0][0] = 1;for (int i = 1; i <= k; i ++) {C[i][0] = C[i][i] = 1, S[i][0] = 0, S[i][i] = 1;for (int j = 1; j < i; j ++) {C[i][j] = add(C[i - 1][j], C[i - 1][j - 1]),S[i][j] = add(mul(S[i - 1][j], j), S[i - 1][j - 1]);// cout << C[i][j] << " \n"[j == i - 1];}}
} 
int tmp[maxk];
void dfs(int u, int fa) {F[u][0] = 1, siz[u] = 1;for (int i = head[u], v; i; i = e[i].nxt) {if ((v = e[i].to) == fa) continue;dfs(v, u);for (int k = 0; k <= :: k && k <= siz[v]; k ++) G[v][k] = add(F[v][k], k > 0 ? mul(k, F[v][k - 1]) : 0);for (int k = 0; k <= :: k && k <= siz[u] + siz[v] - 1; k ++) {tmp[k] = add(F[u][k], G[v][k]);for (int j = max(0, k - siz[u]); j <= k && j <= siz[v]; j ++)addto(tmp[k], mul(C[k][j], mul(F[u][k - j], G[v][j])));} for (int k = 0; k <= :: k; k ++)F[u][k] = tmp[k], tmp[k] = 0;siz[u] += siz[v];} 
} int ans[maxn];
void dfs1(int u, int fa) {for (int i = head[u], v; i; i = e[i].nxt) {if ((v = e[i].to) == fa) continue;dfs1(v, u);for (int k = 0; k <= :: k; k ++)subto(F[u][k], G[v][k]);} // for (int i = 0; i <= k; i ++)//     cout << u << ' ' << i << ' ' << F[u][i] << '\n';
}
bool MemoryED; int main() {scanf("%d %d", &n, &k);for (int i = 1, u, v; i < n; i ++)scanf("%d %d", &u, &v), addEdge(u, v), addEdge(v, u);init(), dfs(1, 0), dfs1(1, 0); int all = 0;for (int i = 1; i <= n; i ++) {for (int k = 0; k <= :: k; k ++)addto(ans[i], mul(S[:: k][k], F[i][k]));// cout << i << ' ' << ans[i] << '\n';addto(all, ans[i]);} printf("%d\n", divv(all, qp(2, n)));return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 微信小程序点击开始倒计时

一、示例 当点击按钮时就开始倒计时代码 <template><view class"sq_box"><button class"button" click"topay">按钮</button><u-modal v-model"modalShow" :show-cancel-button"true" :content&…

【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_tcp_timeout_established

目录一、核心概念1. **TCP 连接状态跟踪**2. **参数作用**二、默认值与典型场景1. **默认值**2. **典型场景**三、如何调整该参数1. **查看当前值**2. **临时修改&#xff08;重启后失效&#xff09;**3. **永久修改**四、相关参数与配合优化1. **其他 TCP 状态超时参数**2. **…

鸿蒙app 开发中的Record<string,string>的用法和含义

Record<string, string> 在鸿蒙 App 开发中的用法在 TypeScript 中&#xff0c;Record<string, string> 是一个映射类型&#xff08;Mapped Type&#xff09;&#xff0c;用于描述一个对象的结构。在鸿蒙 App 开发中&#xff0c;它常用于定义接口、组件属性或函数参…

Webpack、Vite配置技巧与CI/CD流程搭建全解析

Webpack、Vite配置技巧与CI/CD流程搭建全解析 在现代前端开发中&#xff0c;构建工具配置和自动化部署流程是提升开发效率和项目质量的关键环节。本文将深入探讨Webpack和Vite这两大构建工具的核心配置技巧&#xff0c;并详细介绍CI/CD流程的搭建方法。 一、Webpack核心配置技巧…

输入npm install后发生了什么

一、准备阶段&#xff1a;配置与环境检查读取配置优先级npm install 首先加载多层级的配置&#xff08;优先级从高到低&#xff09;4&#xff1a;项目级 .npmrc用户级 .npmrc&#xff08;如 ~/.npmrc&#xff09;全局 npmrcnpm 内置默认配置可通过 npm config ls -l 查看所有配…

SpringBoot集成Redis、SpringCache

1 Redis介绍 1.1 Redis作为缓存 由于Redis的存取效率非常高,在开发实践中,通常会将一些数据从关系型数据库(例如MySQL)中读取出来,并写入到Redis中,后续当需要访问相关数据时,将优先从Redis中读取所需的数据,以此,可以提高数据的读取效率,并且对一定程度的保护关系型…

静态路由综合配置实验报告

一、实验拓扑二、实验需求1.除了R5的环回地址固定5.5.5.0/24&#xff0c;其他网段基于192.168.1.0/24进行合理划分&#xff1b;2.R1-R4每个路由器存在两个环回接口&#xff0c;模拟PC&#xff0c;地址也在192.168.1.0/24网络内&#xff1b;3.R1-R4不能直接编写到达5.5.5.0/24的…

【一起来学AI大模型】PyTorch DataLoader 实战指南

DataLoader 是 PyTorch 中处理数据的核心组件&#xff0c;它提供了高效的数据加载、批处理和并行处理功能。下面是一个全面的 DataLoader 实战指南&#xff0c;包含代码示例和最佳实践。基础用法&#xff1a;简单数据加载import torch from torch.utils.data import Dataset, D…

SpringBoot单元测试类拿不到bean报空指针异常

原代码package com.atguigu.gulimall.product;import com.aliyun.oss.OSSClient; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; impo…

持续集成 简介环境搭建

1. 持续集成简介 1.1 持续集成的作用 随着互联网的蓬勃发展,软件生命周期模型也经历了几个比较大的阶段,从最初的瀑布模型,到 V 模型,再到现在的敏捷或者 devops,不论哪个阶段,项目从立项到交付几乎都离不开以下几个过程,开发、构建、测试和发布,而且一直都在致力于又…

关于 java:11. 项目结构、Maven、Gradle 构建系统

一、Java 项目目录结构标准1.1 Java 项目标准目录结构总览标准 Java 项目目录结构&#xff08;以 Maven / Gradle 通用结构为基础&#xff09;&#xff1a;project-root/ ├── src/ │ ├── main/ │ │ ├── java/ # 主业务逻辑代码&#xff08;核心…

大数据的安全挑战与应对

在大数据时代&#xff0c;大数据安全问题已成为开发者最为关注的核心议题之一。至少五年来&#xff0c;大数据已融入各类企业的运营体系&#xff0c;而采用先进数据分析解决方案的组织数量仍在持续增长。本文将明确当前市场中最关键的大数据安全问题与威胁&#xff0c;概述企业…

PostgreSQL ERROR: out of shared memory处理方式

系统允许的总锁数 SELECT (SELECT setting::int FROM pg_settings WHERE name max_locks_per_transaction) * (SELECT setting::int FROM pg_settings WHERE name max_connections) (SELECT setting::int FROM pg_settings WHERE name max_prepared_transactions);当锁大于…

Django 模型(Model)

1. 模型简介 ORM 简介 MVC 框架中一个重要的部分就是 ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库。即直接面向对象操作数据,无需考虑 sql 语句。 ORM 是“对象-关系-映射”的简称,主要任务是:…

深入解析Hadoop RPC:技术细节与推广应用

Hadoop RPC框架概述在分布式系统的核心架构中&#xff0c;远程过程调用&#xff08;RPC&#xff09;机制如同神经网络般连接着各个计算节点。Hadoop作为大数据处理的基石&#xff0c;其自主研发的RPC框架不仅支撑着内部组件的协同运作&#xff0c;更以独特的工程哲学诠释了分布…

为什么玩游戏用UDP,看网页用TCP?

故事场景&#xff1a;两种不同的远程沟通方式假设你需要和远方的朋友沟通一件重要的事情。方式一&#xff1a;TCP — 打一个重要的电话打电话是一种非常严谨、可靠的沟通方式。• 1. 建立连接 (三次握手):• 你拿起电话&#xff0c;拨号&#xff08;SYN&#xff09;。• 朋友那…

【EGSR2025】材质+扩散模型+神经网络相关论文整理随笔(二)

High-Fidelity Texture Transfer Using Multi-Scale Depth-Aware Diffusion 这篇文章可以从一个带有纹理的几何物体出发&#xff0c;将其身上的纹理自动提取并映射到任意的几何拓扑结构上&#xff08;见下图红线左侧&#xff09;&#xff1b;或者从一个白模几何对象出发&#x…

深度学习图像分类数据集—玉米粒质量识别分类

该数据集为图像分类数据集&#xff0c;适用于ResNet、VGG等卷积神经网络&#xff0c;SENet、CBAM等注意力机制相关算法&#xff0c;Vision Transformer等Transformer相关算法。 数据集信息介绍&#xff1a;玉米粒质量识别分类&#xff1a;[crush, good, mul] 训练数据集总共有3…

Unity VR手术模拟系统架构分析与数据流设计

Unity VR手术模拟系统架构分析与数据流设计 前言 本文将深入分析一个基于Unity引擎开发的多人VR手术模拟系统。该系统采用先进的网络架构设计&#xff0c;支持多用户实时协作&#xff0c;具备完整的手术流程引导和精确的工具交互功能。通过对系统架构和数据管道的详细剖析&…

【Spring Boot】Spring Boot 4.0 的颠覆性AI特性全景解析,结合智能编码实战案例、底层架构革新及Prompt工程手册

Spring Boot 4.0 的颠覆性AI特性全景解析&#xff0c;结合智能编码实战案例、底层架构革新及Prompt工程手册一、Spring Boot 4.0 核心AI能力矩阵二、AI智能编码插件实战&#xff08;Spring AI Assistant&#xff09;1. 安装与激活2. 实时代码生成场景3. 缺陷预测与修复三、AI引…