第 1 场 算法季度赛 蓝桥搜狐畅游(1~5 , 7)

1、水题

2、树上dp

3、模拟

4、概率

5、拆位

6、(是没学过的东西了...)

7、组合数学

1. 新年快乐【算法赛】

        

直接模拟

#include <iostream>
using namespace std;
int main()
{cout <<"2024 AK";return 0;
}

 2. 蓝桥圣诞树【算法赛】

思路:其实就是连通块大小小于3。定义dp[u]代表了u的子树中,包含了u这个结点的连通块的大小。 状态转移方程就呼之欲出:dp[u] = 1 + \sum dp[v],其中vu的孩子且跟u颜色相同。在树上跑一边dfs把所有节点的dp值求出来即可。然后再看有无大于3的连通块。

        

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
struct HLD {//轻重链剖分int n;std::vector<int> siz, top, dep, parent, in, out, seq , color , dp;//子树大小 所在重链的顶部节点 深度 父亲 子树DFS序的起点 子树DFS序的终点std::vector<std::vector<int>> adj;int cur = 1;HLD() {}HLD(int n) {init(n);}void init(int n) {this->n = n;siz.resize(n);top.resize(n);dep.resize(n);parent.resize(n);in.resize(n);out.resize(n);seq.resize(n);color.resize(n);dp.resize(n);cur = 0;adj.assign(n, {});}void addEdge(int u, int v) {adj[u].push_back(v);adj[v].push_back(u);}void work(int root = 1) {top[root] = root;dep[root] = 0;parent[root] = -1;dfs1(root);dfs2(root);}void dfs1(int u) {if (parent[u] != -1) {adj[u].erase(std::find(adj[u].begin(), adj[u].end(), parent[u]));}siz[u] = 1;for (auto &v : adj[u]) {parent[v] = u;dep[v] = dep[u] + 1;dfs1(v);siz[u] += siz[v];if (siz[v] > siz[adj[u][0]]) {std::swap(v, adj[u][0]);}}}void dfs2(int u) {in[u] = ++cur;seq[in[u]] = u;dp[u] = 1;for (auto v : adj[u]) {top[v] = v == adj[u][0] ? top[u] : v;dfs2(v);if(color[u] == color[v]){dp[u] += dp[v];}}out[u] = cur;}int lca(int u, int v) {while (top[u] != top[v]) {if (dep[top[u]] > dep[top[v]]) {u = parent[top[u]];} else {v = parent[top[v]];}}return dep[u] < dep[v] ? u : v;}int dist(int u, int v) {return dep[u] + dep[v] - 2 * dep[lca(u, v)];}int jump(int u, int k) {if (dep[u] < k) {return -1;}int d = dep[u] - k;while (dep[top[u]] > d) {u = parent[top[u]];}return seq[in[u] - dep[u] + d];}bool isAncester(int u, int v) {//是否为祖先return in[u] <= in[v] && in[v] < out[u];}int rootedParent(int u, int v) {std::swap(u, v);if (u == v) {return u;}if (!isAncester(u, v)) {return parent[u];}auto it = std::upper_bound(adj[u].begin(), adj[u].end(), v, [&](int x, int y) {return in[x] < in[y];}) - 1;return *it;}int rootedSize(int u, int v) {if (u == v) {return n;}if (!isAncester(v, u)) {return siz[v];}return n - siz[rootedParent(u, v)];}int rootedLca(int a, int b, int c) {return lca(a, b) ^ lca(b, c) ^ lca(c, a);}
}hld;
void solve() 
{cin >> n;string s;cin >> s;hld.init(n + 5);for(int i = 1 ; i <= n ; i ++){hld.color[i] = s[i - 1] - '0';}for(int i = 1 ; i < n ; i ++){int u , v;cin >> u >> v;hld.addEdge(u , v);}hld.work();for(int i = 1 ; i <= n ; i ++){if(hld.dp[i] >= 3){cout <<"NO\n";return;}}cout <<"YES\n";
}            
int main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;cin>>t;while(t--){solve();}return 0;
}

3. 空间复杂度【算法赛】 

        

模拟题,注意数据大小。

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define int long long
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
void solve() 
{cin >> n;string s;cin >> s;cin >> m;map<string , int> mp;mp["MB"] = 2;mp["KB"] = 1;mp["B"] = 0;int res = n * pow(1024 , mp[s]);cout << res / m << endl;
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;cin>>t;while(t--){solve();}return 0;
}

 

 4. 开关【算法赛】

        

思路:先想最暴力的做法:对于处于(i , j)坐标的灯而言,会被第i次操作1和第j次操作2所影响。最终该灯亮的情况共有两种:1、触发了操作1且没有触发操作2。2、没触发操作1且触发了操作2。那么它最终亮的概率是\frac{a_{i}}{b_{i}}* \frac{1 - c_{j}}{d_{j}} + \frac{1-a_{i}}{b_{i}}* \frac{ c_{j}}{d_{j}}。 对于每个灯都求一遍的话时间复杂度为O(N^{2})

        现考虑如何去优化,可以发现:将所有灯的概率全加起来的式子是可以合并同类项的,即\sum_{i = 1}^{n} (\frac{a_{i}}{b_{i}}*\sum _{j = 1}^{n} \frac{1 - c_{j}}{d_{j}}) + \sum_{i = 1}^{n}(\frac{1-a_{i}}{b_{i}}* \sum _{j = 1}^{n}\frac{ c_{j}}{d_{j}})。因此只需要预处理出\sum _{j = 1}^{n} \frac{1 - c_{j}}{d_{j}}\sum _{j = 1}^{n} \frac{c_{j}}{d_{j}}。然后再遍历所有的i即可。这样做复杂度是O(N)的。

        

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define int long long
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 998244353;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL qpow(LL a , LL b)//快速幂
{LL sum=1;while(b){if(b&1){sum=sum*a%mod;}a=a*a%mod;b>>=1;}return sum;
}
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}void solve() 
{int n;cin >> n;n++;vector<int>a(n , 0) , b(n , 0) , c(n , 0) , d(n , 0);for(int i = 1 ; i < n ; i ++){cin >> a[i];}for(int i = 1 ; i < n ; i ++){cin >> b[i];}for(int i = 1 ; i < n ; i ++){cin >> c[i];}for(int i = 1 ; i < n ; i ++){cin >> d[i];}vector<int>ab(n , 0) , cd(n , 0) ,ba(n , 0) , dc(n , 0);for(int i = 1 ; i < n ; i ++){ab[i] = a[i] * qpow(b[i] , mod - 2);cd[i] = c[i] * qpow(d[i] , mod - 2);ba[i] = (b[i] - a[i]) * qpow(b[i] , mod - 2);dc[i] = (d[i] - c[i]) * qpow(d[i] , mod - 2);ab[i] %= mod;cd[i] %= mod;ba[i] %= mod;dc[i] %= mod;}vector<int>sum1(n , 0) , sum2(n , 0);for(int i = 1 ; i < n ; i ++){sum1[i] = sum1[i - 1] + cd[i];sum2[i] = sum2[i - 1] + dc[i];sum1[i] %= mod;sum2[i] %= mod;}//对于第i行的灯而言,有两种方案使得其亮:ab && !cd  !ab && cdint ans = 0;for(int i = 1 ; i < n ; i ++){ans += ab[i] * sum2[n - 1];ans %= mod;ans += ba[i] * sum1[n - 1];ans %= mod;}cout << ans;
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t = 1;while(t--){solve();}return 0;
}

5. 异或与求和【算法赛】 

        

题意:某不知名高手曾经说过,对于所有情况求和,采用定1求1的思考方式,即遍历右端点,考虑如何O(1)的去处理每个右端点。

        由于i_{1}i_{2}i_{3}i_{4}不存在关联关系,因此此题可以转化为求解\sum a_{i_{1}} \oplus a_{i_{2}} + \sum a_{i_{3}} \oplus a_{i_{4}}

然后可以先求\sum a_{i_{1}} \oplus a_{i_{2}},再求\sum a_{i_{3}} \oplus a_{i_{4}},过程是差不多的。

        至此,本题其实跟普通的求解 \sum a_{i_{1}} \oplus a_{i_{2}} 差不多,只不过(a_{i_{1}} ,a_{i_{2}})这组数对在求和中不止出现了一次,而是总共出现了(a_{i_{3}} , a_{i_{4}})所能形成的数对的个数。

        然后就是普通的拆位求异或和。

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define int long long
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 998244353;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL qpow(LL a , LL b)//快速幂
{LL sum=1;while(b){if(b&1){sum=sum*a%mod;}a=a*a%mod;b>>=1;}return sum;
}
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int dp1[32] , dp0[32];
void solve() 
{int n;cin >> n;vector<int>a(n , 0);for(int i = 0 ; i < n ; i ++){cin >> a[i];}vector<int>dp(n , 0);int cnt0 = 0 , cnt1 = 0;int ans = 0;for(int j = 0 ; j < 32 ; j ++){cnt0 = 0 , cnt1 = 0;for(int i = 0 ; i < n ; i ++){if((a[i] >> j) & 1){dp[i] = cnt0; cnt1 ++;}else{dp[i] = cnt1;cnt0 ++;}dp[i] %= mod;	int res = n - i - 1;res = res * (res - 1) / 2;res %= mod;ans += ((dp[i] * (1 << j)) % mod) * res;ans %= mod;}}for(int j = 0 ; j < 32 ; j ++){cnt0 = 0 , cnt1 = 0;for(int i = n - 1 ; i >= 0 ; i --){if((a[i] >> j) & 1){dp[i] = cnt0; cnt1 ++;}else{dp[i] = cnt1;cnt0 ++;}dp[i] %= mod;	int res = i;res = res * (res - 1) / 2;res %= mod;ans += ((dp[i] * (1 << j)) % mod)* res;ans %= mod;}//cout << ans << endl;}
//	cout << dp0[1];cout << ans;
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t = 1;while(t--){solve();}return 0;
}

7. 集合统计【算法赛】 

        

思路:将有关联的(相互牵制的)数放在到一个集合。然后根据乘法原理,最终方案数为所有集合能够拿出的方案数的乘积,最后再减去空集即最终答案。

        直接看例子1 3 2 , 可以发现:(1 , 2)是相互牵制的一组数(有1就不能有2,有2就不能有1)共有3种取数方案,而(3)是单独的数,这个集合共有2种取数方案。因此包含空集的方案共有3 * 2 = 6 个,再减去1就是答案5了。

        然后再看(1 4 2)这个例子,可以发现(1 , 2 , 4)这三个数是相互牵制的,但是需要注意的是:1、4是可以同时取到的,因此这个集合共有5种取数方案。1 4 2 最终的答案也就是9。

        接下来考虑如果一个集合当中有n个数,那么能拿出多少种方案?可以发现,这就是一个简单的dp问题,设dp[i]代表了集合中共有i个元素,能够选择的非空方案数。若不能和前一个数同时选dp[i] = dp[i - 1] + 1(不选择自己 + 只选择自己)。同时又能和前一个数以外的数同时选,因此dp[i] = dp[i]+ dp[i - 2]

        解决完一个集合的方案数,接下来考虑总共有多少个集合:[r/k + 1 , r]之间的数,其都只是一个元素的集合。同理,[r/k^{2} + 1, r/k]之间的数,都是只有两个元素的集合...以此类推。但是需要注意的是:例如题中1 3 2 这个例子,按照上述思路,[2 , 3] 之间的数都是只有一个元素的集合,那么只有一个元素的集合数应该为2,但是事实并非如此,这是因为2这个元素实际上包含在(1,2)这个集合当中了。因此要求真正的集合数量,还需要减去重复的数。

        假设一个集合元素为(a , ka , k^2a),那么ka会出现在集合大小为2的范围内,k^2a会出现在集合大小为1的范围内,这些都是重复的,需要减去的。因此可以得出,假设集合大小为x的集合共有y个,那么所有集合大小小于x的集合数都要减去y,这样才能避免重复。

        解决完集合数量之后就是用快速幂快速求解了。

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define int long long
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 998244353;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL qpow(LL a , LL b)//快速幂
{LL sum=1;while(b){if(b&1){sum=sum*a%mod;}a=a*a%mod;b>>=1;}return sum;
}
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int inv[200];
void init(){inv[0] = 1;for(int i = 1 ; i < 200 ; i ++){inv[i] = inv[i - 1] + 1;if(i >= 2){inv[i] += inv[i - 2];}inv[i] %= mod;}
}
void solve() 
{int l , r , k;cin >> l >> r >> k;if(k == 1){cout << 0 << endl;		}else{int x = r;int pre = r;vector<int>t;while(x >= l){//[x + 1 , pre] 都是处于一个集合的x /= k;t.pb(pre - max(x , l - 1));pre = x;}int len = t.size();for(int i = len - 1 ; i >= 0 ; i --){for(int j = i - 1 ; j >= 0 ; j --){t[j] -= t[i];}}int ans = 1;for(int i = 0 ; i < len ; i ++){ans *= qpow(inv[i] + 1 , t[i]);ans %= mod;}cout << (ans - 1 + mod) % mod << endl;}
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t = 1;init();cin >> t;while(t--){solve();}return 0;
}

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

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

相关文章

【每日一题】收集巧克力

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;枚举操作数 写在最后 Tag 【枚举】【数组】【2023-12-28】 题目来源 2735. 收集巧克力 题目解读 有长度为 n, 下标从 0 开始的整数数组 nums, 表示收集不同类型的巧克力的成本. nums[i] 表示收集类型 i 巧克力的成本…

12.28_黑马数据结构与算法笔记Java

目录 291 最长公共子序列 动态规划 分析 292 最长公共子序列 动态规划 实现 293 Leetcode 583 两个字符串删除 294 Leetcode 300 最长递增子序列 分析 295 Leetcode 300 最长递增子序列 实现 296 Catalan数 分析 297 Catalan数 实现 298 Catalan数 应用 出栈总数 299 C…

【C++】vector 基本使用(详解)

目录 一&#xff0c;vector 的介绍 二&#xff0c;vector 的定义 1&#xff0c;vector() 2&#xff0c;vector&#xff08;size_type n, const value_type& val value_type()&#xff09; 3&#xff0c;vector (const vector& x) 4&#xff0c;vector (InputIte…

PAT乙级 1025 反转链表

给定一个常数 K 以及一个单链表 L&#xff0c;请编写程序将 L 中每 K 个结点反转。例如&#xff1a;给定 L 为 1→2→3→4→5→6&#xff0c;K 为 3&#xff0c;则输出应该为 3→2→1→6→5→4&#xff1b;如果 K 为 4&#xff0c;则输出应该为 4→3→2→1→5→6&#xff0c;即…

【Redis前奏曲】初识Redis

文章目录 一.Redis的一些特性(优点)1. 在内存中存储数据2. 可编程的3. 可扩展的4.持久化5. 聚集(集群)6. 高可用Redis快的原因 二. 使用案例1.数据库2. 缓存3. 消息队列 一.Redis的一些特性(优点) 我们在上一篇博客中说到,Redis是一个在内存中存储数据的中间件.用作数据库,数据…

本地部署Python Flask并搭建web问答应用程序框架实现远程访问

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架&#xff0c;让我们可以使用Python语言快速实现一个网站或Web服务&#xff0c;本期教程…

比起 Pandas, 你更需要 Polars:详细指南

在数据分析领域&#xff0c;Python 由于其多功能性和广泛的库生态系统而成为一种流行的语言。数据处理和分析在提取见解和做出明智决策方面发挥着至关重要的作用。然而&#xff0c;随着数据集的规模和复杂性不断增长&#xff0c;对高性能解决方案的需求变得至关重要。 有效地处…

【Docker】添加指定用户到指定用户组

运行Docker ps命令&#xff0c;报错&#xff1a;/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied 创建docker用户组 安装docker时默认已经创建好 sudo groupadd docker添加用户加入docker用户组 此处以用户user为例 sudo usermo…

cf918div4的E题讲解

虽然是div4&#xff0c;但是打的稀烂&#xff0c;哭死。 E题看了jiangly的题解豁然开朗&#xff0c;原来思路这么简单。被自己蠢到了&#xff0c;我傻傻的用前缀和&#xff0c;两层for枚举区间&#xff0c;不出意外TLE了&#xff0c;写的那一刻就知道要超时&#xff0c;但是没…

微信小程序全部内嵌H5遇到的问题记录

微信小程序内嵌H5遇到的问题 问题1&#xff1a;js-sdk的配置h5里面微信公众平台 问题2&#xff1a;业务域名的配置小程序开发微信公众平台 问题3&#xff1a;H5与小程序的消息传递。方案1H5 方案2H5页面小程序开发 方案3H5页面小程序页面 使用H5来开发APP&#xff0c;之后将该H…

TG7050CKN,TG7050SKN ,TG7050CMN,TG7050SMN

爱普生推出的温补晶振型号&#xff1a;TG7050CKN&#xff0c;TG7050SKN &#xff0c;TG7050CMN&#xff0c;TG7050SMN频率范围为 10mhz ~ 54mhz 适用于广泛的频率需求。这几款的特点就是耐高温&#xff0c;温度可达105℃高温&#xff0c;而且都是高稳定性温补晶振&#xff0c;&…

Springboot单元测试mock踩坑

mock bean方式 //mock bean方式一MockBeanpublic UserMapper userMapper;//mock bean方式二Beanpublic LogMapper logMapper() {return Mockito.mock(LogMapper.class);} 如何注册mapstruct bean //扫描mapstruct包路径ComponentScan("xxx.xxx.mapstruct")public cl…

ERP与智能商品系统在供应链管理上有哪些区别和优势?

ERP系统和智能商品系统在供应链管理方面有以下区别和优势&#xff1a; 范围和综合性&#xff1a;ERP系统涵盖了企业的整个供应链管理过程&#xff0c;包括供应商管理、采购管理、库存管理、生产计划和物流管理等。它可以实现供应链上下游的信息共享和协同&#xff0c;提高供应…

计算机网络复习2

物理层 文章目录 物理层通讯基础奈奎斯特定理香农定理编码与调制交换传输介质&#xff08;了解&#xff09;物理层设备 通讯基础 数据信号码元信源信道信宿单工通道&#xff1a;只有一个方向半双工通道&#xff1a;不能同时发送和接收全双工通道 奈奎斯特定理 规定&#xff…

下载完redis每次启动项目必须打开redis服务,否则不能运行,解决方法

redis-server.exe --service-install redis.windows.conf 在redis的目录启动终端运行此命令可以下载redis服务&#xff0c;然后在服务里面启动redis服务&#xff0c;之后就可以不用打开小黑框再启动了 redis下载地址&#xff1a; Redis下载安装教程_redis 3.2下载-CSDN博客

【C++核心编程(一)】

一、内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域&#xff1a; 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的。 全局区&#xff1a;存放全局变量和静态变量以及常量。 栈区&#xff1a;由编译器自动分配释放,存放函数的…

《Vue2.X 进阶知识点》- 防 ElementUI Divider 分割线

前言 使用 el-divider 背景为白色是没问题的。 但当背景换成其它颜色&#xff0c;问题就出现了&#xff01;&#xff01; 仔细看原来是两层&#xff0c;默认背景色是白色。 想着把背景色改为透明应该能用&#xff0c;结果发现背面是一条实线&#xff0c;难怪要用白色遮挡…不符…

ChatGPT4.0(中文版)国内无限制免费版(附网址)

ChatGPT&#xff0c;由OpenAI开发的人工智能语言模型。它是你的数字对话伙伴&#xff0c;无论你有何问题或需要什么帮助&#xff0c;它都能提供有用的信息。 经过不断的研发和更新&#xff0c;ChatGPT的性能和功能得到了显著提升。现在&#xff0c;我们将重点介绍ChatGPT的两个…

TVS 管选型与 ESD 防护设计

文章目录 ESD 防护设计 TVS管的基础特性 TVS管的选型方法 TVS管布局细节 参考文献 ESD 防护设计 静电防护设计是让电路板外接的各类金属按钮开关在接触到外界空气放电或接触放电时&#xff0c;在这种瞬间出现的大能量注入到电路板后&#xff0c;能够通过某种设计好的通道泄…

VSCode + vite + vue3断点调试配置

没想到这个配置我搞了一上午&#xff0c;网上很多的配置方案都没有效果。总算搞定了&#xff0c;特此记录一下。 首先需要在.vscode文件夹下面创建launch.json配置文件。然后输入如下配置&#xff1a; {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。//…