部分树上问题及图的联通性(图论学习总结部分内容)

news2025/1/9 6:30:13

前言

由于图论学习总结内容过多,全放在一篇博客过于冗长现进行拆分,本文是部分树上问题及图的联通性部分,其他部分地址见:图论学习总结(For XCPC)

三、部分树上问题及图的联通性

最小生成树

知识点
  • K r u s k a l Kruskal Kruskal​ 算法
  • P r i m Prim Prim 算法
  • B o r u v k a Boruvka Boruvka​​​ 算法
  • 次小生成树
  • 瓶颈生成树
  • 最小瓶颈路
  • K r u s k a l Kruskal Kruskal 重构树
例题
e g 1 : eg1: eg1: 走廊泼水节(克鲁斯卡尔思想的灵活运用)

A-走廊泼水节(nowcoder.com)

题目大意

给定一棵N个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树。 求增加的边的权值总和最小是多少。

e g 2 : eg2: eg2 B-Picnic Planning

B-Picnic Planning (nowcoder.com)(码量较大)
题目大意

Picnic Planning

e g 3 eg3 eg3:L - Classic Problem(缩点+ B o r u v k a Boruvka Boruvka 算法, 2023 C C P C 2023CCPC 2023CCPC广东防AK题)

Problem - L - Classic Problem
题目大意

Given an undirected complete graph with n n n vertices and m m m triples P 1 , P 2 , ⋯   , P m P_1, P_2, \cdots, P_m P1,P2,,Pm where P i = ( u i , v i , w i ) P_i = (u_i, v_i, w_i) Pi=(ui,vi,wi), it’s guaranteed that 1 ≤ u i < v i ≤ n 1 \leq u_i < v_i \leq n 1ui<vin, and for any two triples P i P_i Pi and P j P_j Pj with different indices we have ( u i , v i ) ≠ ( u j , v j ) (u_i, v_i) \ne (u_j, v_j) (ui,vi)=(uj,vj).

For any two vertices x x x and y y y in the graph ( 1 ≤ x < y ≤ n 1 \leq x < y \leq n 1x<yn), define the weight of the edge connecting them as follows:

  • If there exists a triple P i P_i Pi satisfying u i = x u_i = x ui=x and v i = y v_i = y vi=y, the weight of edge will be w i w_i wi.
  • Otherwise, the weight of edge will be ∣ x − y ∣ |x - y| xy​.

Calculate the total weight of edges in the minimum spanning tree of the graph.

注:这题还未ac 先占坑

生成树计数

LCA、树上差分应用与树上问题

知识点
  • 树的直径

    • 树形DP
    • 两次 B F S BFS BFS (注意运用条件)
  • L C A LCA LCA

    • 树上倍增法
    • T a r j a n Tarjan Tarjan​ 算法 (离线算法)
  • 树链剖分

  • 树上hash

    • 在判断一些树是否同构时,常常把这些树转成哈希存储起来,降低复杂度
    • 这里给出 O I   W i k i OI\ Wiki OI Wiki 的推荐实现:
      树哈希
  • 树分治

例题
e g 1 : eg1: eg1: E. Boomerang(2024ICPC全国邀请赛(武汉),树的直径,银牌题)

E. Boomerang
题目大意
给定一个 n 个节点的树,根节点为 r, 设 V ( r , t ) = v ∣ d i s ( r , v ) ⩽ t V(r, t) = {v|dis(r, v) ⩽ t} V(r,t)=vdis(r,v)t,其中 d i s ( u , v ) dis(u, v) dis(u,v) 表示树上两点 u 和 v 间的唯一简单路径的边数。再给定一个 t 0 t_0 t0,对每个 k k k,你需要选择一个点 r ′ r' r,定义 V ′ ( r ′ , t ) = v ∣ d i s ( r ′ , v ) ⩽ k ( t − t 0 ) V'(r', t) = {v|dis(r', v) ⩽ k(t−t0)} V(r,t)=vdis(r,v)k(tt0)。找到一个最小的 t t t,使得 V ( r , t ) ⊆ V ′ ( r ′ , t ) V(r, t) ⊆ V'(r', t) V(r,t)V(r,t)
题目分析

  • 对题目进行分析,我们很容易想到一点,就是随着 k k k 的增大, t t t 非严格递减。
  • 我们考虑在 k = i ∈ [ 1 , n ] k=i \in [1,n] k=i[1,n] r ′ r' r 怎么选择会最优。
  • 假设 t t t 是一个可能的答案,那么显然,子树 V ( r , t ) V(r, t) V(r,t) 的直径的中点就是 r ′ r' r 的最佳选择。
  • 到这里,这道题的解法已经很明显了,我们可以维护出每个时刻 t t t,子树 V ( r , t ) V(r, t) V(r,t) 的直径是多少。
  • 从小到达枚举 t t t 判断在 k = i k=i k=i 的情况下是否满足条件。(这里在具体实现时用到了第一条提到的性质)
    参考了jls思路,ac代码(Python,FastIO已省略,其中手写栈 模板已给出):
# --------------------
# 手写栈模板
# 克服py栈太浅的问题
def bootstrap(f, stack=[]):
    def wrappedfunc(*args, **kwargs):
        if stack:
            return f(*args, **kwargs)
        else:
            to = f(*args, **kwargs)
            while True:
                if type(to) is GeneratorType:
                    stack.append(to)
                    to = next(to)
                else:
                    stack.pop()
                    if not stack:
                        break
                    to = stack[-1].send(to)
            return to

    return wrappedfunc


def solve():
    n = I()
    g = [[] for _ in range(n+1)]
    for _ in range(n-1):
        x,y = MI()
        g[x].append(y)
        g[y].append(x)
    r,t0 = MI()

    par, dep, h, dia = [0]*(n+1), [0]*(n+1), [0]*(n+1), [0]*n
    final = 0
    @bootstrap
    def dfs(x) -> None:
        nonlocal final
        v = [0,0]
        for y in g[x]:
            if y == par[x]: continue
            par[y] = x
            dep[y] = dep[x] + 1  # 深度
            yield dfs(y)
            d = h[y] + 1  # 高度
            for i in range(2):
                if d > v[i]: d,v[i] = v[i],d

        h[x] = v[0]
        dia[dep[x] + v[1]] = max(dia[dep[x] + v[1]], 2*v[1])
        final = max(v[0]+v[1], final)
        yield None
    dfs(r)

    for i in range(1,n):
        dia[i] = max(dia[i], min(dia[i-1]+1, final))
    for i in range(n-2,-1,-1):
        dia[i] = max(dia[i], dia[i+1]-2)

    t = t0
    ans = [0]*(n+1)
    for k in range(n,0,-1):
        while (t - t0) * k * 2 < dia[min(t, n-1)]:
            t += 1
        ans[k] = t

    print_arr(ans[1:])


solve()
e g 2 : eg2: eg2: 闇の連鎖 (树上差分)

闇の連鎖

题目大意

闇の連鎖

​ 根据题意,“主要边”构成一棵树,“附加边”是非树边。把一条附加边 ( x , y ) (x,y) (x,y) 添加到树上会构成一个环,如过一开始切断 x x x~ y y y 路径上的一条边,那么第二条必须切断 ( x , y ) (x,y) (x,y) 才能将 D a r k Dark Dark 分为不连通的两部分。我们可以考虑 ( x , y ) (x,y) (x,y) x x x~ y y y 路径上的树边覆盖了一次,那么如果我们第一次切掉覆盖数为 0 0 0 的树边, 那么之后切任意一条非树边即可,如果我们切掉覆盖数为 1 1 1 的树边,第二步的切分唯一,其余情况无法将 D a r k Dark Dark 分为不连通的两部分。

​ 由上述分析可知,我们要解决问题的模型就是在给定的一张无向图和一课生成树,求非树边将树边覆盖了多少次。解决这一问题的经典做法就是“树上差分”。给定每个结点的权值初值为 0 0 0,对于每条非树边 ( x , y ) (x,y) (x,y) 我们让 v a l x + = 1 ,   v a l y + = 1 ,   v a l l c a ( x , y ) − = 2 val_x+=1,\ val_y+=1,\ val_{lca(x,y)}-=2 valx+=1, valy+=1, vallca(x,y)=2,最后用树形DP做一次 “子树前缀和” 即可得到每条树边的覆盖次数,然后统计即可得到答案。

​ 关于时间复杂度:考虑用树上倍增法求 L C A LCA LCA,复杂度为 O ( n log ⁡ n ) O(n\log n) O(nlogn)。对于覆盖次数的预处理和答案求解需要遍历整张图,复杂度为 O ( n + m ) O(n+m) O(n+m)。总的时间复杂度为 O ( n + m + n log ⁡ n ) O(n+m+n\log n) O(n+m+nlogn)

启发: 如果我们需要对树上的一条路径的每条边加上一个 d d d,我们可以转化为 v a l x + = d ,   v a l y + = d ,   v a l l c a ( x , y ) − = 2 d val_x+=d,\ val_y+=d,\ val_{lca(x,y)}-=2d valx+=d, valy+=d, vallca(x,y)=2d

e g 3 : eg3: eg3: 天天爱跑步(蓝书例题)

E-天天爱跑步

e g 4 : eg4: eg4:​ 异象石(蓝书例题)

F-异象石_

e g 5 : eg5: eg5:​ 次小生成树(蓝书例题)

G-次小生成树_

e g 6 : eg6: eg6: 疫情控制(蓝书例题)

H-疫情控制_

基环树

e g 1 : eg1: eg1: Island (洛谷P4381 [IOI2008])

P4381 [IOI2008] Island - 洛谷

题目大意

岛屿
n n n 个点 n n n 条边,可以知道这题给你的是一个基环树森林,而根据题意中渡船的条件可知,当你从一棵基环树到另一棵的时候,你不能再回去了。所以我们可以对每个基环树单独计算。我们不能重复到达同一岛屿,所以我们要求的就是基环树上的一条最长简单路径的长度,那么所有基环树的和就是我们的答案。

​ 现在我们考虑每一棵基环树答案的情况1、不经过环(该情况可树形DP求解,即求树的直径)2、经过环。对于情况二我们要找到环上的两个结点 s i , s j s_i,s_j si,sj,使得 D [ s i ] + D [ s j ] + d i s t [ s i , s j ] D[s_i]+D[s_j]+dist[s_i,s_j] D[si]+D[sj]+dist[si,sj] 最大,其中 d i s t [ s i , s j ] dist[s_i,s_j] dist[si,sj] 是环上两点的距离,我们把环拆开复制一倍,再做线性 D P DP DP 即可求得答案,用单调队列优化,该DP时间复杂度为 O ( P ) O(P) O(P) P P P 为环的点数。总的时间复杂度为 O ( n ) O(n) O(n)

​ 关于实现,这道题需要 d f s dfs dfs b f s + 拓扑排序 bfs+拓扑排序 bfs+拓扑排序 找连通块和环,还要树形 D P DP DP 求直径,再对环做 D P DP DP 等等,常数比较大, 1 0 6 10^6 106 d f s dfs dfs 还可能爆栈c++实现如下:记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)(ac代码)

python实现如下:

记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

结果:

结果

e g 2 : eg2: eg2: 创世纪(蓝书例题)

B-创世纪

题目大意

创世纪

e g 3 : eg3: eg3: 牛镇公务员考试(2024牛客寒假营,基环树一般的处理方式)

K-牛镇公务员考试
题目大意

牛镇公务员考试

e g 4 : S u g a r   S w e e t I I eg4:Sugar\ Sweet II eg4:Sugar SweetII​ (基环树 + 概率,2023ICPC杭州站1/2个银牌题)

2023_ICPC_杭州站 - H - Codeforces

题目大意

Sugar is sweet. There are n n n children asking for sugar. Prof. Chen gives out sugar to the children. The i i i-th child initially has a i a_{i} ai bags of sugar. There are n n n events happening in uniformly randomized order. The i i i-th event is:

  • If the i i i-th child has strictly less bags of sugar than the b i b_{i} bi-th child, then the i i i-th child will get extra w i w_{i} wi bags of sugar. Otherwise, nothing happens.

Now, since the events happen in random order, Randias, which is the assistant of Prof. Chen, wants to know the expected number of bags of sugar each child will have after all the events happen.

It can be shown that the answer can be expressed as an irreducible fraction x y \frac{x}{y} yx where x x x and y y y are integers and y ≢ 0 ( m o d 1 0 9 + 7 ) y \not \equiv 0 \pmod {10^9 + 7} y0(mod109+7). Output the integer equal to x ⋅ y − 1 ( m o d 1 0 9 + 7 ) x \cdot y^{-1} \pmod {10^9 + 7} xy1(mod109+7). In other words, output such an integer a a a that 0 ≤ a < 1 0 9 + 7 0\leq a < 10^9 + 7 0a<109+7 and a ⋅ y ≡ x ( m o d 1 0 9 + 7 ) a \cdot y \equiv x \pmod {10^9 + 7} ayx(mod109+7)​.

题目解析

  • 我们分析一下题目,第 i i i 个事件的发生与否只与 a b i a_{b_i} abi 有关,事件的依赖关系构成基环树森林。
  • 我们分析一下依赖 关系,如果 a i < a b i a_i < a_{b_i} ai<abi 那么事件 i i i 必定发生,如果 a i ≥ a b i a_i \ge a_{b_i} aiabi a i < a b i + w i a_i < a_{b_i} + w_i ai<abi+wi 那么事件 i i i 必定在事件 b i b_i bi 之后发生,否则一定不发生。
  • 我们要求的是每个小朋友最后的期望糖果数,其实只要求出每个人加糖的期望即可。
  • 对于必定会发生的事件我们让他的概率为 1 1 1,对于可能发生的事件我们对其先后关系进行连边。
  • 假设从一个必定发生的事件 x x x 走向 可能发生的事件 y y y 是基环树上的一条简单路径,那么 y y y 发生的概率就是这条路径长度的阶乘分之一: 1 L i ! \frac{1}{L_i!} Li!1,因为只有事件发生的顺序刚好满足这个排列才行。

ac代码参考(FastIO已省略)

mod = 10**9 + 7
N = 5*(10**5)+1
inv = lambda x:pow(x,mod-2,mod)
jc = [1]*N  # 阶乘
jc[0] = 0
for i in range(2,N):
    jc[i] = i*jc[i-1] % mod
 
def solve():
    n = I()
    a = [0]+LI()
    b = [0]+LI()
    w = [0]+LI()
    g = [[] for _ in range(n+1)]
    li = [0]*(n+1)
    deg = [0]*(n+1)
    for i in range(1,n+1):
        if a[i] >= a[b[i]] and a[i] < a[b[i]] + w[b[i]]:
            g[b[i]].append(i)
            deg[i] += 1
        if a[i] < a[b[i]]:
            li[i] = 1
    q = deque()
    for i in range(1,n+1):
        if deg[i] == 0: q.append(i)
    while q:
        x = q.popleft()
        if li[x] == 0: continue
        for y in g[x]:
            li[y] += li[x]+1
            deg[y] -= 1
            if deg[y] == 0: q.append(y)
 
    for i in range(1,n+1):
        a[i] = (a[i] + w[i]*inv(jc[li[i]])) % mod
    print_arr(a[1:])
 
for _ in range(int(input())):
    solve()

Tarjan与无向图的连通性

注:python 的Tarjan算法与连通性相关代码模板和知识点可以看我的这篇博客

例题
e g 1 : eg1: eg1: 嗅探器

嗅探器

题目大意(来源:牛客网)

某军搞信息对抗实战演习,红军成功地侵入了蓝军的内部网络,蓝军共有两个信息中心,红军计划在某台中间服务器上安装一个嗅探器,从而能够侦听到两个信息中心互相交换的所有信息,但是蓝军的网络相当的庞大,数据包从一个信息中心传到另一个信息中心可以不止有一条通路。现在需要你尽快地解决这个问题,应该把嗅探器安装在哪个中间服务器上才能保证所有的数据包都能被捕获?

input

输入文件的第一行一个整数 n   ( n ≤ 100 ) n\ (n\le 100) n (n100),表示蓝军网络中服务器的数目。
接下来若干行是对蓝军网络的拓扑结构描述,每行是两个整数 i , j i,j i,j,表示编号为i和编号为j的两台服务器间存在连接(显然连接是双向的),服务器的编号从 1 1 1 开始,一行两个 0 0 0 表示网络的拓扑结构描述结束,再接下来是两个整数 a , b a,b a,b,分别表示两个中心服务器的编号。

output

输出编号。如果有多个解输出编号最小的一个,如果找不到任何解,输出No solution。

题目解析

读完题目很容易想到这道题就是让我们求从 s s s t t t 的必经点或判断无解。首先,一个点如果是必经点,那么其必定是一个割点,如果这个割点将 s s s t t t​ 恰好分隔在两个双连通分量中,那么这就是我们答案的候选之一。

具体实现细节方面,我们可以从 s s s 出发对 T a r j a n Tarjan Tarjan 求割点的算法进行的时候做一个判断,看看搜索树中,如果当前点 x x x 是割点,且 x ! = s ,   x ! = t ,   d f n [ y ] ≤ d f n [ t ] x != s,\ x!=t,\ dfn[y]\le dfn[t] x!=s, x!=t, dfn[y]dfn[t] 。如果满足 d f n [ y ] ≤ d f n [ t ] dfn[y]\le dfn[t] dfn[y]dfn[t] 那么意味着从当前割点出发沿着 y y y 这一方向搜索树的子树中有 t t t,那么此时割点 x x x 必定是必经点。

e g 3 eg3 eg3 [ H N O I 2012 ] [HNOI2012] [HNOI2012]​​ 矿场搭建

[ H N O I 2012 ] [HNOI2012] [HNOI2012]​​ 矿场搭建
HNOI2012矿场搭建

Tarjan与有向图的连通性

注:python 的Tarjan算法与连通性相关代码模板和知识点可以看我的这篇博客

例题
e g 1 : eg1: eg1: [ZJOI2007] 最大半连通子图

ZJOI2007 最大半连通子图

练习题

B-树网的核_0x63 图论-树的直径与最近公共祖先

C-最优比率生成树_0x62 图论-最小生成树 (0/1分数规划)

D-雨天的尾巴 (树上差分的综合运用)

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

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

相关文章

Mybatis入门之在基于Springboot的框架下拿到MySQL中数据

介绍 Java技术操作数据库 MyBatis是一款优秀的持久层框架 用于简化JDBC的开发 优秀的持久层框架 我们要基于Springboot整合Mybatis 实操 学习 基于Mybatis是如何操作数据库的 通过MyBatis书写SQL语句 SQL语句执行完毕后 会将查询结果返回给Java程序 表中数据会自动封装…

灵卡科技HDMI音视频采集及H.264编码一体化采集卡—LCC260

推荐一款由灵卡科技倾力打造的高品质HDMI音视频采集卡——LCC260。以创新的技术&#xff0c;精湛的工艺和卓越的性能&#xff0c;为您提供全方位的音视频解决方案。 LCC260是一款集HDMI音视频采集与H.264编码于一身的全功能采集卡。它的输入端配备了最先进的HDMI 1.4a标准接口&…

Vue实战技巧 —— 企业开发实战中的常见疑难问题

Vue企业开发实战中的常见疑难问题 1. 解决Vue动态路由参数变化&#xff0c;页面数据不更新2. vue组件里定时器销毁问题3. vue实现按需加载组件的两种方式4. 组件之间&#xff0c;父子组件之间的通信方案5. Vue中获取当前父元素&#xff0c;子元素&#xff0c;兄弟元素6. 开发环…

HIVE大数据平台SQL优化分享

相信很多小伙伴在面试的时候&#xff0c;必然跳不过去的一个问题就是SQL脚本的优化&#xff0c;这是很多面试官爱问的问题&#xff0c;也是可以证明你实力进阶的一个重要的能力。 下面给大家分享一个重量级的大数据行业sql技能---hive大数据平台SQL优化。 此文章是大数据平台…

Python中tkinter编程入门4

在Python中tkinter编程入门3-CSDN博客中创建了Button控件&#xff0c;点击该控件就会产生一个点击事件&#xff0c;在创建Button控件时指定该点击事件的处理程序后&#xff0c;按键控件就会对用户的点击事件产生响应。 1 定义事件处理器 定义事件处理器就是一个自定义的函数。…

【UnityRPG游戏制作】Unity_RPG项目_BOSS系统

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

使用Nginx对网站资源进行加密访问并限制访问IP

你好呀&#xff0c;我是赵兴晨&#xff0c;文科程序员。 大家在工作中有没有遇到过这样的需求&#xff0c;新上的网站部署到生产服务器上&#xff0c;但是还没公开&#xff0c;只允许个别高层领导看。 思来想去&#xff0c;我想到了一个简单的方法&#xff0c;通过Nginx对网站…

【Javaer学习Python】 1、Django安装

安装 Python 和 PyCharm 的方法就略过了&#xff0c;附一个有效激活PyCharm的链接&#xff1a;https://www.quanxiaoha.com/pycharm-pojie/pycharm-pojie-20241.html 1、安装Django # 安装Django pip install Django# 查看当前版本 python -m django --version 5.0.62、创建项…

SpringBoot项目的项目部署全过程

一、前端 安装nginx 1.将提前准备好的nginx的安装包上传到Linux中/opt目录下(我用的是Xftp) 2.解压 2.1:在xshell中解压该文件: tar -zxvf nginx-1.20.1.tar.gz 2.2:进入解压后的目录 cd nginx-1.20.1/ 2.3:安装需要的依赖 yum -y install zlib zlib-devel openssl openssl-de…

如何去掉试卷答案,并打印出来

实际上&#xff0c;针对试卷答案的问题&#xff0c;一个简单而高效的方法是使用图片编辑软件中的“消除笔”功能。只需将试卷拍摄成照片&#xff0c;然后通过这一功能&#xff0c;就可以轻松擦除答案。虽然这种方法可能需要一些时间和耐心&#xff0c;但它确实为我们提供了一个…

Kubernetes 群集部署

一、Kubernetes 概述 1.1、什么是 Kubernetes Kubernetes 是一个可移植、可扩展的开源容器编排系统&#xff0c;主要用于自动化部署、扩展和管理容器应用&#xff0c;提供资源调度、部署管理、服务发现、扩容缩容、监控等功能。对于负载均衡、服务发现、高可用、滚动升级、自…

【智能算法】河马优化算法(HO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;MH Amiri受到自然界河马社会行为启发&#xff0c;提出了河马优化算法&#xff08;Hippopotamus Optimization Algorithm, HO&#xff09;。 2.算法原理 2.1算法思想 …

《无畏契约》游戏画面出现“撕裂感“,你清楚背后的原理吗?

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

LangChain 核心模块学习 模型输入 Prompts

模型输入 Prompts 一个语言模型的提示是用户提供的一组指令或输入&#xff0c;用于引导模型的响应&#xff0c;帮助它理解上下文并生成相关和连贯的基于语言的输出&#xff0c;例如回答问题、完成句子或进行对话。 提示模板&#xff08;Prompt Templates&#xff09;&#xf…

一篇文章带你入门CSRF

1.什么是CSRF 用一个形象生动的比喻就是&#xff1a; 你给朋友的房子留下了备用钥匙&#xff0c;但是有人偷偷拿走了这把钥匙&#xff0c;然后用这把钥匙进入了你朋友的房子并做了各种坏事。你朋友以为只有你能使用这把钥匙&#xff0c;所以没对任何操作产生怀疑。 在这个比…

保研机试之【设备驱动程序】

B选项&#xff1a; 综上&#xff0c;我认为这道题选择D~

从头开始学Spring—02基于XML管理bean

目录 1.实验一&#xff1a;入门案例 2.实验二&#xff1a;获取bean 3.实验三&#xff1a;依赖注入之setter注入 4.实验四&#xff1a;依赖注入之构造器注入 5.实验五&#xff1a;特殊值处理 6.实验六&#xff1a;为类类型属性赋值 7.实验七&#xff1a;为数组类型属性赋值…

Charger之三动态电源路径管理(DPPM)

-----本文简介----- 主要内容包括&#xff1a; 领资料&#xff1a;点下方↓名片关注回复&#xff1a;粉丝群 硬件之路学习笔记公众号 Charger的动态电源路径管理&#xff08;DPPM&#xff09; 前篇内容&#xff1a;①电池管理IC&#xff08;Charger&#xff09;了解一下&…

国产分布式数据库高可用故障检测实现

在分布式数据库架构下&#xff0c;当数据库节点异常时&#xff0c;数据库管理组件能够自动感知到异常并触发节点隔离或者自动切换&#xff0c;是数据库高可用容灾的基本能力。在节点服务器异常、网络异常或进程异常等场景下&#xff0c;各数据库产品本身已经具备了可靠的检测能…

C#之如何判断数据类型

一、GetType方法 a.GetType()&#xff1a;获取当前变量的类型对象 string str "Hello World";Console.WriteLine(str.GetType()); 结果: 二、typeof方法 typeof(Int)&#xff1a;获取的是Int类型的类型对象 int num 10;Console.WriteLine(num.GetType() typeof(i…