2024牛客寒假算法基础集训营2部分题解

Tokitsukaze and Bracelet

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

《绯染天空》是一款由 key 社与飞机社共同开发的角色扮演游戏,剧情内容由著名的剧本作家麻枝准编写。它是一款氪金手游,但也有 steam 端。直至今日(2024.2.5),Tokitsukaze 入坑短短6个月,时长却已达到了382小时。

游戏中有着一个''饰品炼成''系统,通过消耗宝石,可以炼成对应的饰品。''饰品炼成''系统有关手环的信息介绍如下:

手环有 333 种属性:普通攻击百分比加成,体力,精神。每次炼成手环时,会对手环的每个属性都随机赋予强化等级,每个属性的强化等级可能为+0+0+0, +1+1+1, +2+2+2。强化等级对应的属性值如下:

  •  对于普通攻击百分比加成来说:+0+0+0 为 100%100\%100%,+1+1+1 为 150%150\%150%,+2+2+2 为 200%200\%200%;
  •  对于体力和精神来说:+0+0+0 会在 {29,30,31,32}\{29,30,31,32\}{29,30,31,32} 里随机选择,+1+1+1 会在 {34,36,38,40}\{34,36,38,40\}{34,36,38,40} 里随机选择, +2+2+2 固定为 454545。

例如,一个普通攻击百分比加成 100%100\%100%,体力 454545,精神 404040 的手环的强化等级为 +3+3+3。其中普通攻击力百分比提供了 +0+0+0,体力提供了 +2+2+2,精神提供了 +1+1+1。

下图是一个顶级属性的手环:

 



现在 Tokitsukaze 炼成了 nnn 个手环,她只知道每个手环的属性,请你告诉她每个手环的强化等级是多少。

输入描述:

第一行包含一个整数 nnn (1≤n≤1001 \leq n \leq 1001≤n≤100),表示 Tokitsukaze 炼成了 nnn 个手环。接下来 nnn 行,每行三个整数 aia_iai​, bib_ibi​, cic_ici​ (ai∈{100,150,200}a_i \in \{100,150,200\}ai​∈{100,150,200}; bib_ibi​, ci∈{29,30,31,32,34,36,38,40,45}c_i \in \{29,30,31,32,34,36,38,40,45\}ci​∈{29,30,31,32,34,36,38,40,45}),表示第 iii 个手环的数值:普通攻击百分比加成 ai%a_i\%ai​%, 体力 bib_ibi​, 精神 cic_ici​。

输出描述:

输出 nnn 行,每行包含一个整数,第 iii 行表示第 iii 个手环的强化等级。

示例1

输入

复制5 100 29 29 100 32 38 150 45 40 200 45 45 100 45 40

5
100 29 29
100 32 38
150 45 40
200 45 45
100 45 40

输出

复制0 1 4 6 3

0
1
4
6
3

说明

样例解释:第 111 个手环的属性为:普通攻击百分比加成 100%100\%100%,体力 292929,精神 292929。普通攻击力百分比提供了 +0+0+0,体力提供了 +0+0+0,精神提供了 +0+0+0,所以该手环的强化等级为 +0+0+0;第 222 个手环的属性为:普通攻击百分比加成 100%100\%100%,体力 323232,精神 383838。普通攻击力百分比提供了 +0+0+0,体力提供了 +0+0+0,精神提供了 +1+1+1,所以该手环的强化等级为 +1+1+1;第 333 个手环的属性为:普通攻击百分比加成 150%150\%150%,体力 454545,精神 404040。普通攻击力百分比提供了 +1+1+1,体力提供了 +2+2+2,精神提供了 +1+1+1,所以该手环的强化等级为 +4+4+4;第 444 个手环的属性为:普通攻击百分比加成 200%200\%200%,体力 454545,精神 454545。普通攻击力百分比提供了 +2+2+2,体力提供了 +2+2+2,精神提供了 +2+2+2,所以该手环的强化等级为 +6+6+6;第 555 个手环的属性为:普通攻击百分比加成 100%100\%100%,体力 454545,精神 404040。普通攻击力百分比提供了 +0+0+0,体力提供了 +2+2+2,精神提供了 +1+1+1,所以该手环的强化等级为 +3+3+3。
#include<bits/stdc++.h>
using namespace std;
int main(){int n,a,b,c,x;cin>>n;while(n--){x=0;cin>>a>>b>>c;if(a==150)x+=1;if(a==200)x+=2;if(b==34||b==36||b==38||b==40)x+=1;if(b==45)x+=2;if(c==34||c==36||c==38||c==40)x+=1;if(c==45)x+=2;cout<<x<<endl;}return 0;
}

Tokitsukaze and Cats

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

Tokitsukaze 家里有 kkk 只猫。现实中 kkk 为 555(与本题无关),如下图所示:

 



众所周知 Tokitsukaze 特别懒,在家从不搞卫生,搞卫生这事都是由 Tokitsukaze 的老婆 TomiokapEace 一手包办。在 TomiokapEace 搞卫生时,它们总是会上窜下跳,特别碍事,于是她想做一些措施让它们无法移动。

现在把 Tokitsukaze 的家看作是一个 n×mn \times mn×m 的网格,第 iii 只猫的位置在 (xi,yi)(x_i,y_i)(xi​,yi​)。TomiokapEace 想用若干片防猫网来限制猫的移动,她将在一只猫所在格子的四周各放上一片防猫网。

一片防猫板是位于两个相邻格子间隔,长度为1个单位的障碍物,可以阻止猫移动。具体来讲,当猫位于 (x,y)(x,y)(x,y) 时,若(x−1,y)(x-1,y)(x−1,y), (x,y−1)(x,y-1)(x,y−1), (x+1,y)(x+1,y)(x+1,y), (x,y+1)(x,y+1)(x,y+1) 中的任意一格和 (x,y)(x,y)(x,y) 之间不存在防猫板,则猫可以向相邻格子移动。

TomiokapEace 想知道至少需要购买多少片防猫网才能使所有猫无法移动。

PS:现实中确实买了防猫网,塑料的,上面有尖尖的刺。本以为它们不敢踩上去,谁知道根本防不了一点,直接给你表演精准踩到刺与刺的空隙间。对于它们来说,这玩意也只不过是一个减速带罢了(悲)。

输入描述:

第一行包含三个整数 nnn, mmm, kkk (1≤n,m≤3001 \leq n, m \leq 3001≤n,m≤300; 1≤k≤n⋅m1 \leq k \leq n \cdot m1≤k≤n⋅m),表示 Tokitsukaze 家的大小为 n×mn \times mn×m,以及家里有 kkk 只猫。接下来 kkk 行,每行两个整数 xix_ixi​, yiy_iyi​ (1≤xi≤n1 \leq x_i \leq n1≤xi​≤n; 1≤yi≤m1 \leq y_i \leq m1≤yi​≤m),表示第 iii 只猫的位置。保证所有猫的位置互不相同。

输出描述:

输出一个整数,表示 TomiokapEace 至少需要购买防猫网的数量。

示例1

输入

复制5 4 3 3 2 4 3 4 4

5 4 3
3 2
4 3
4 4

输出

复制11

11

说明

 

样例1如图,这三只猫至少需要 111111 片防猫网(黑色边界为防猫网)。你可以认为每只猫是独立的,可以随便移动,移动到别的猫所在位置也算移动。所以即使两只猫相邻,中间也需要有防猫网。

示例2

输入

复制1 1 1 1 1

1 1 1
1 1

输出

复制4

4

//把重复的边删掉就行

#include<bits/stdc++.h>
using namespace std;
int main(){int n,m,k,z=0,x,y,a[305][305]={0};cin>>n>>m>>k;z=k*4;while(k--){cin>>x>>y;a[x][y]=1;}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]){if(a[i+1][j])z--;if(a[i][j+1])z--;
//只需要判断当前位置的下边和右边,因为i循环就是从上到下,j循环就是从左到右}}}cout<<z;return 0;
}

Tokitsukaze and Eliminate (easy) 链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

easy 与 hard 的唯一区别是 colicol_icoli​ 的范围。

Tokitsukaze 正在玩一个消除游戏。

初始有 nnn 个宝石从左到右排成一排,第 iii 个宝石的颜色为 colicol_icoli​。Tokitsukaze 可以进行若干次以下操作:

  •  任选一种颜色 xxx,将颜色为 xxx 的最右边那颗宝石、以及该宝石右边的所有宝石全部消除。

Tokitsukaze 想知道至少需要几次操作才能把 nnn 个宝石全部消除。

输入描述:

第一行包含一个整数 TTT (1≤T≤2⋅1051 \leq T \leq 2 \cdot 10^51≤T≤2⋅105),表示 TTT 组测试数据。对于每组测试数据:第一行包含一个整数 nnn (1≤n≤2⋅1051 \leq n \leq 2 \cdot 10^51≤n≤2⋅105),表示初始宝石的数量。第二行包含 nnn 个整数 col1,col2,…,colncol_1, col_2, \ldots, col_ncol1​,col2​,…,coln​ (1≤coli≤min⁡(n,2)1 \leq col_i \leq \min(n,2)1≤coli​≤min(n,2)),表示每个宝石的颜色。保证 ∑n\sum n∑n 不超过 2⋅1052 \cdot 10^52⋅105。

输出描述:

对于每组测试数据,输出一个整数,表示把 nnn 个宝石全部消除所需要的最少操作次数。

示例1

输入

复制4 3 1 2 1 5 1 2 2 1 2 11 2 2 1 2 2 1 1 2 2 1 2 1 1

4
3
1 2 1
5
1 2 2 1 2
11
2 2 1 2 2 1 1 2 2 1 2
1
1

输出

复制2 2 6 1

2
2
6
1

说明

第一组测试数据:初始宝石为 [1,2,1][1,2,1][1,2,1];第 111 次操作选择颜色 222,可以消除最右边的 222 个宝石,当前剩余宝石为 [1][1][1];第 222 次操作选择颜色 111,即可把所有宝石都消除。第三组测试数据:初始宝石为 [2,2,1,2,2,1,1,2,2,1,2][2,2,1,2,2,1,1,2,2,1,2][2,2,1,2,2,1,1,2,2,1,2];第 111 次操作选择颜色 111,可以消除最右边的 222 个宝石,当前剩余宝石为 [2,2,1,2,2,1,1,2,2][2,2,1,2,2,1,1,2,2][2,2,1,2,2,1,1,2,2];第 222 次操作选择颜色 111,可以消除最右边的 333 个宝石,当前剩余宝石为 [2,2,1,2,2,1][2,2,1,2,2,1][2,2,1,2,2,1];第 333 次操作选择颜色 222,可以消除最右边的 222 个宝石,当前剩余宝石为 [2,2,1,2][2,2,1,2][2,2,1,2];第 444 次操作选择颜色 111,可以消除最右边的 222 个宝石,当前剩余宝石为 [2,2][2,2][2,2];第 555 次操作选择颜色 222,可以消除最右边的 111 个宝石,当前剩余宝石为 [2][2][2];第 666 次操作选择颜色 222,即可把所有宝石都消除
//待定

Tokitsukaze and Short Path (plus)链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

plus 与 minus 的唯一区别是 边权的计算方式。

Tokitsukaze 有一张 nnn 个顶点的完全图 GGG, 顶点编号是 111 到 nnn,编号为 iii 的顶点的值是 aia_iai​。

完全图指的是每对顶点之间都恰好有一条无向边的图。对于顶点 uuu 和顶点 vvv 之间的无向边,边权计算方式如下:

wu,v={0,u=v∣au+av∣+∣au−av∣,u≠vw_{u,v}=\begin{cases} 0, & u = v \\ |a_u+a_v|+|a_u-a_v|, & u \ne v \end{cases}wu,v​={0,∣au​+av​∣+∣au​−av​∣,​u=vu​=v​

定义 dist(i,j)dist(i,j)dist(i,j) 表示顶点 iii 为起点,顶点 jjj 为终点的最短路。求 ∑i=1n∑j=1ndist(i,j)\sum_{i=1}^n \sum_{j=1}^n dist(i,j)∑i=1n​∑j=1n​dist(i,j)

关于最短路的定义:

定义一条从 sss 到 ttt 的路径为若干条首尾相接的边形成的序列且该序列的第一条边的起点为 sss,最后一条边的终点为 ttt,特别的,当 s=ts=ts=t 时该序列可以为空。

定义一条从 sss 到 ttt 的路径长度为该路径中边权的总和。

定义 sss 到 ttt 的最短路为 sss 到 ttt 所有路径长度中的最小值。

输入描述:

第一行包含一个整数 TTT (1≤T≤2⋅1051 \leq T \leq 2\cdot 10^51≤T≤2⋅105),表示 TTT 组测试数据。对于每组测试数据:第一行包含一个整数 nnn (1≤n≤2⋅1051 \leq n \leq 2\cdot 10^51≤n≤2⋅105),表示完全图 GGG 的顶点数量。第二行包含 nnn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_na1​,a2​,…,an​ (1≤ai≤2⋅1051 \leq a_i \leq 2\cdot 10^51≤ai​≤2⋅105),表示完全图 GGG 的每个顶点的值。保证 ∑n\sum n∑n 不超过 2⋅1052 \cdot 10^52⋅105。

输出描述:

对于每组测试数据,输出一个整数表示答案。

示例1

输入

复制5 1 1 3 10 1 100 5 1 2 3 4 5 4 2 3 5 8 5 1 3 3 4 5

5
1
1
3
10 1 100
5
1 2 3 4 5
4
2 3 5 8
5
1 3 3 4 5

输出

复制0 840 160 148 164

0
840
160
148
164

说明

第二组测试数据,图 GGG 如下:

显然,dist(1,2)=w1,2=20dist(1,2)=w_{1,2}=20dist(1,2)=w1,2​=20, dist(1,3)=w1,3=200dist(1,3)=w_{1,3}=200dist(1,3)=w1,3​=200, dist(2,3)=w2,3=200dist(2,3)=w_{2,3}=200dist(2,3)=w2,3​=200。所以 ∑i=1n∑j=1ndist(i,j)=840\sum_{i=1}^n \sum_{j=1}^n dist(i,j)=840∑i=1n​∑j=1n​dist(i,j)=840

//一般代码会超时。以 n=4,分别是1,2,3,4为例,得到dist(1,2)=4,sist(1,3)=6,dist(1,4)=8,dist(2,3)=6,dist(2,4)=8,dist(3,4)=8,

最后(4+6+6+8+8+8)*2得到输出结果。

我们可以发现三个点,第一,每个dist的值其实是较大的那个数的两倍;第二,(4+6+6+8+8+8)也就是3个8,2个6,1个4,对应n-1个2*a[n-1],以此类推;第三,加起来*2得到最终结果。

#include<bits/stdc++.h>
using namespace std;
int main(){long long t,n,i,j,a[200005];cin>>t;while(t--){long long y=0;cin>>n;if(n==1){int x;cin>>x;cout<<"0\n";continue;}for(i=0;i<n;i++)cin>>a[i];sort(a,a+n);for(i=n-1;i>0;i--){//关键代码,主要通过找规律y+=i*(2*a[i]);}cout<<y*2<<endl;}return 0;
}

Tokitsukaze and Short Path (minus)链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

plus 与 minus 的唯一区别是 边权的计算方式。

Tokitsukaze 有一张 nnn 个顶点的完全图 GGG, 顶点编号是 111 到 nnn,编号为 iii 的顶点的值是 aia_iai​。

完全图指的是每对顶点之间都恰好有一条无向边的图。对于顶点 uuu 和顶点 vvv 之间的无向边,边权计算方式如下:

wu,v={0,u=v∣au+av∣−∣au−av∣,u≠vw_{u,v}=\begin{cases} 0, & u = v \\ |a_u+a_v|-|a_u-a_v|, & u \ne v \end{cases}wu,v​={0,∣au​+av​∣−∣au​−av​∣,​u=vu​=v​

定义 dist(i,j)dist(i,j)dist(i,j) 表示顶点 iii 为起点,顶点 jjj 为终点的最短路。求 ∑i=1n∑j=1ndist(i,j)\sum_{i=1}^n \sum_{j=1}^n dist(i,j)∑i=1n​∑j=1n​dist(i,j)

关于最短路的定义:

定义一条从 sss 到 ttt 的路径为若干条首尾相接的边形成的序列且该序列的第一条边的起点为 sss,最后一条边的终点为 ttt,特别的,当 s=ts=ts=t 时该序列可以为空。

定义一条从 sss 到 ttt 的路径长度为该路径中边权的总和。

定义 sss 到 ttt 的最短路为 sss 到 ttt 所有路径长度中的最小值。

输入描述:

第一行包含一个整数 TTT (1≤T≤2⋅1051 \leq T \leq 2\cdot 10^51≤T≤2⋅105),表示 TTT 组测试数据。对于每组测试数据:第一行包含一个整数 nnn (1≤n≤2⋅1051 \leq n \leq 2\cdot 10^51≤n≤2⋅105),表示完全图 GGG 的顶点数量。第二行包含 nnn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_na1​,a2​,…,an​ (1≤ai≤2⋅1051 \leq a_i \leq 2\cdot 10^51≤ai​≤2⋅105),表示完全图 GGG 的每个顶点的值。保证 ∑n\sum n∑n 不超过 2⋅1052 \cdot 10^52⋅105。

输出描述:

对于每组测试数据,输出一个整数表示答案。

示例1

输入

复制5 1 1 3 10 1 100 5 1 2 3 4 5 4 2 3 5 8 5 1 3 3 4 5

5
1
1
3
10 1 100
5
1 2 3 4 5
4
2 3 5 8
5
1 3 3 4 5

输出

复制0 16 64 64 64

0
16
64
64
64

说明

第二组测试数据,图 GGG 如下:

显然,dist(1,2)=w1,2=2dist(1,2)=w_{1,2}=2dist(1,2)=w1,2​=2, dist(1,3)=w1,2+w2,3=4dist(1,3)=w_{1,2}+w_{2,3}=4dist(1,3)=w1,2​+w2,3​=4, dist(2,3)=w2,3=2dist(2,3)=w_{2,3}=2dist(2,3)=w2,3​=2。所以 ∑i=1n∑j=1ndist(i,j)=16\sum_{i=1}^n \sum_{j=1}^n dist(i,j)=16∑i=1n​∑j=1n​dist(i,j)=16

//和上面一题的区别就是计算方式不同。 同样的,我们以 n=4,分别是1,2,3,4为例,得到dist(1,2)=2,sist(1,3)=2,dist(1,4)=2,dist(2,3)=4,dist(2,4)=4,dist(3,4)=6,这里根据最短距离,dist(3,4)可以=dist(1,3)+dist(1,4)=4,那么,我们我们发现,有时候dist(i,j)>dist(1,i)+dist(1,j),所以要去比较dist(i,j)和4*a[0],也就是a[i-1]和2*a[0].

最后(2+2+2+4+4+4)*2得到输出结果。

#include<bits/stdc++.h>
using namespace std;
int main(){long long t,n,i,j,a[200005];cin>>t;while(t--){long long y=0;cin>>n;if(n==1){int x;cin>>x;cout<<"0\n";continue;}for(i=0;i<n;i++)cin>>a[i];sort(a,a+n);for(i=1;i<n;i++){y+=(n-i)*min(2*a[0],a[i-1])*2;}cout<<y*2<<endl;}return 0;
}

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

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

相关文章

二阶系统的迹-行列式平面方法(trace-determinant methods for 2nd order system)

让我们再次考虑二阶线性系统 d Y d t A Y \frac{d\mathbf{Y}}{dt}A\mathbf{Y} dtdY​AY 我们已经知道&#xff0c;分析这种二阶系统。最主要的是注意它的特征值情形。 &#xff08;此处没有重根的情形&#xff0c;所有是partial&#xff09; 而特征值&#xff0c;也就是系…

JavaScript实现轮播图方法

效果图 先来看下效果图&#xff0c;嫌麻烦就不用具体图片来实现了&#xff0c;主要是理清思路。&#xff08;自动轮播&#xff0c;左右按钮切换图片&#xff0c;小圆点切换图片&#xff0c;鼠标移入暂停轮播&#xff0c;鼠标移出继续轮播&#xff09; HTML 首先是html内容&am…

七、Nacos源码系列:Nacos服务发现

目录 一、服务发现 二、getServices()&#xff1a;获取服务列表 2.1、获取服务列表 2.2、总结图 三、getInstances(serviceId)&#xff1a;获取服务实例列表 3.1、从缓存中获取服务信息 3.2、缓存为空&#xff0c;执行订阅服务 3.2.1、调度更新&#xff0c;往线程池中…

【跳槽须知】关于企业所签订的竞业协议你知道多少?

年后跳槽须知自己签订的合同中是否存在竞业协议&#xff0c;谨防协议造成经济损失 &#x1f413; 什么是竞业协议 竞业协议时用于保护自己的权益&#xff0c;在员工离职时决定是否启动的一种协议&#xff0c;避免一些掌握公司机密的一些重要岗位人才流入竞争对手的公司&#xf…

C语言辨析——声明int a[3][6], a[0][9]越界吗?

本文来源&#xff1a;声明int a[3][6], a[0][9]越界吗&#xff1f; 1. 问题 看下面的程序&#xff1a; #include <stdio.h> int main(void) {int a[3][6];for(int i0; i<3; i) {for(int j0; j<6; j){a[i][j] i * 6 j;}}printf("%d\n",a[0][9]);retu…

【大厂AI课学习笔记】【1.5 AI技术领域】(7)图像分割

今天学习到了图像分割。 这是我学习笔记的脑图。 图像分割&#xff0c;Image Segmentation&#xff0c;就是将数字图像分割为若干个图像子区域&#xff08;像素的集合&#xff0c;也被称为超像素&#xff09;&#xff0c;改变图像的表达方式&#xff0c;以更容易理解和分析。 …

伯克利研究院推出Ghostbuster用于检测由LLM代笔的文本

Ghostbuster的架构&#xff0c;用于检测人工智能生成文本的最先进的新方法 像 ChatGPT 这样的大型语言模型写得非常好&#xff0c;但事实上&#xff0c;它们已经成为一个棘手的问题。学生们已经开始使用这些模型代写作业&#xff0c;导致一些学校禁止 ChatGPT。此外&#xff0c…

【C语言】通过socket看系统调用过程

一、通过socket看系统调用过程 在Linux操作系统中&#xff0c;系统调用是用户空间与内核空间之间交互的一种方式。当一个应用程序需要执行操作系统级别的任务时&#xff0c;比如创建一个网络套接字&#xff08;socket&#xff09;&#xff0c;它必须通过系统调用请求内核来执行…

【服务器数据恢复】服务器RAID模块硬件损坏的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某品牌服务器中有一组由数块SAS硬盘组建的RAID5磁盘阵列&#xff0c;服务器操作系统是WINDOWS SERVER&#xff0c;服务器中存放企业数据&#xff0c;无数据库文件。 服务器出故障之前出现过几次意外断电的情况&#xff0c;服务器断电…

用HTML5实现灯笼效果

本文介绍了两种实现效果&#xff1a;一种使用画布&#xff08;canvas&#xff09;标签/元素&#xff0c;另一种不用画布&#xff08;canvas&#xff09;标签/元素主要使用CSS实现。 使用画布&#xff08;canvas&#xff09;标签/元素实现&#xff0c;下面&#xff0c;在画布上…

一键部署自动化运维工具spug

简介 Spug是面向中小型企业设计的轻量级无Agent的自动化运维平台&#xff0c;整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。 部署 1.创建目录 mkdir -p /opt/spug/{mysql,service,repos} 2.进入目录 cd /o…

Node.js之npm单独与批量升级依赖包的方式

Node.js之npm单独与批量升级依赖包的方式 文章目录 Node.js之npm单独与批量升级依赖包的方式npm查看与升级依赖包1. 单独安装或升级最新版本2. 查看依赖但不升级1. npm outdated2. npm update 3. 批量升级新版本4. npm-check-updates1. 全局安装2. ncu查看可升级的版本3. 升级依…