当前位置: 首页 > article >正文

BUAA XCPC 2025 Spring Training 2

C \color{green}{\texttt{C}} C

[Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription]

给定一棵以 1 1 1 为根的树,记 a i a_{i} ai 表示节点 i i i 的权值, lca( i , j ) \text{lca(}i,j) lca(i,j) 表示节点 i i i j j j 的最近公共祖先,求下面矩阵的行列式,对 998244353 998244353 998244353 取模。

A = ( a lca(1,1) a lca(1,2) … a lca(1,n) a lca(2,1) a lca(2,2) … a lca(2,n) … … a lca(n,1) … … a lca(n,n) ) A = \left ( \begin{matrix} a_{\text{lca(1,1)}} & a_{\text{lca(1,2)}} & \dots & a_{\text{lca(1,n)}} \\ a_{\text{lca(2,1)}} & a_{\text{lca(2,2)}} & \dots & a_{\text{lca(2,n)}} \\ & \dots & \dots & \\ a_{\text{lca(n,1)}} & \dots & \dots & a_{\text{lca(n,n)}}\end{matrix} \right ) A= alca(1,1)alca(2,1)alca(n,1)alca(1,2)alca(2,2)alca(1,n)alca(2,n)alca(n,n)

[Analysis] \color{blue}{\texttt{[Analysis]}} [Analysis]

线代题。

随便取出一个叶子节点 u u u,其实有 lca(v,u) = lca(v,fa(u)) \text{lca(v,u)}=\text{lca(v,fa(u))} lca(v,u)=lca(v,fa(u)),其中 v ≠ u , fa(u) v \not = u, \text{fa(u)} v=u,fa(u) 表示 u u u 的父亲。

不妨设 u = n u=n u=n

det A = ∣ a lca(1,1) a lca(1,2) … a lca(1,n) a lca(2,1) a lca(2,2) … a lca(2,n) … … a lca(n,1) … … a lca(n,n) ∣ = ∣ a lca(1,1) a lca(1,2) … a lca(1,n) − a lca(1,fa(n)) a lca(2,1) a lca(2,2) … a lca(2,n) − a lca(2,fa(n)) … … a lca(n,1) … … a lca(n,n) − a lca(n,fa(n)) ∣ = ∣ a lca(1,1) a lca(1,2) … 0 a lca(2,1) a lca(2,2) … 0 … … a lca(n,1) … … a n − a fa(n) ∣ \text{det} A= \left | \begin{matrix} a_{\text{lca(1,1)}} & a_{\text{lca(1,2)}} & \dots & a_{\text{lca(1,n)}} \\ a_{\text{lca(2,1)}} & a_{\text{lca(2,2)}} & \dots & a_{\text{lca(2,n)}} \\ & \dots & \dots & \\ a_{\text{lca(n,1)}} & \dots & \dots & a_{\text{lca(n,n)}}\end{matrix} \right | = \left | \begin{matrix} a_{\text{lca(1,1)}} & a_{\text{lca(1,2)}} & \dots & a_{\text{lca(1,n)}}-a_{\text{lca(1,fa(n))}} \\ a_{\text{lca(2,1)}} & a_{\text{lca(2,2)}} & \dots & a_{\text{lca(2,n)}}-a_{\text{lca(2,fa(n))}} \\ & \dots & \dots & \\ a_{\text{lca(n,1)}} & \dots & \dots & a_{\text{lca(n,n)}}-a_{\text{lca(n,fa(n))}}\end{matrix} \right | = \left | \begin{matrix} a_{\text{lca(1,1)}} & a_{\text{lca(1,2)}} & \dots & 0 \\ a_{\text{lca(2,1)}} & a_{\text{lca(2,2)}} & \dots & 0 \\ & \dots & \dots & \\ a_{\text{lca(n,1)}} & \dots & \dots & a_{n}-a_{\text{fa(n)}} \end{matrix}\right | detA= alca(1,1)alca(2,1)alca(n,1)alca(1,2)alca(2,2)alca(1,n)alca(2,n)alca(n,n) = alca(1,1)alca(2,1)alca(n,1)alca(1,2)alca(2,2)alca(1,n)alca(1,fa(n))alca(2,n)alca(2,fa(n))alca(n,n)alca(n,fa(n)) = alca(1,1)alca(2,1)alca(n,1)alca(1,2)alca(2,2)00anafa(n)

由 Laplace 展开,可以转化为 ( n − 1 ) (n-1) (n1) 阶的问题进行递归。最终答案就是

∏ i = 1 n ( a i − a fa(i) ) \prod\limits_{i=1}^{n} \left ( a_{i} - a_{\text{fa(i)}} \right ) i=1n(aiafa(i))


D \color{green}{\texttt{D}} D

[Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription]

给定一个 n n n 个点, ( 2 n − 2 ) (2n-2) (2n2) 条边的有向图,每条边有边权。前 ( n − 1 ) (n-1) (n1) 条边构成一棵以 1 1 1 为根的树,边的方向远离根;后 ( n − 1 ) (n-1) (n1) 条边为每个点到 1 1 1 的边。每次操作修改其中一条边的边权,或求出从 u u u v v v 的最短路。

边权为 [ 1 , 1 × 1 0 6 ] [1,1 \times 10^{6}] [1,1×106] 间的整数。

[Analysis] \color{blue}{\texttt{[Analysis]}} [Analysis]

u u u v v v 的路径其实很少。

  1. 如果 u u u 能沿着树上的边走到 v v v,那肯定沿着树走最优。
  2. 否则 u u u 必须先回到 1 1 1,再从 1 1 1 沿着树走到 v v v

维护 1 1 1 沿着树到每个点的距离(基为 Len ( u ) \text{Len}(u) Len(u)),当修改一条树上边的时候,整棵子树内所有点的距离都将发生变化,但是变化量相同。利用树的深度优先遍历序(即 dfs \text{dfs} dfs 序)连续的性质,可以用线段树维护这个距离。

然后第 1 1 1 种情况的答案其实就是 Len ( v ) − Len ( u ) \text{Len}(v)-\text{Len}(u) Len(v)Len(u)

这里其实利用了差分的思想,将区间求和的问题转化为了前缀和相减。

考虑求出 u u u 回到 1 1 1 的最短路。

从直觉上讲,很容易以为就是后 ( n − 1 ) (n-1) (n1) 条边的权值。但是显然 too young too simple 了。

u u u 虽然不能沿着树的父亲回到 1 1 1,但它可以先到自己的某个子孙再回到 1 1 1。假设 u u u 走到子树内的节点 w w w 再从 w w w 回到 1 1 1,那么路径的长度就是:

l u , w + val w l_{u,w}+\text{val}_w lu,w+valw

其中 l u , w l_{u,w} lu,w 表示在树上从 u u u w w w 的距离, val w \text{val}_{w} valw 表示 w w w 1 1 1 的边的长度。

显然这样是求不出来的。但是 l u , w = Len w − Len u l_{u,w}=\text{Len}_{w}-\text{Len}_{u} lu,w=LenwLenu,于是上面式子改写成:

( Len w + val w ) − Len u \left ( \text{Len}_{w} + \text{val}_{w} \right )-\text{Len}_{u} (Lenw+valw)Lenu

括号内的项仅和 w w w 有关,括号外仅和 u u u 有关。可以用线段树维护括号内的项,这样就可以单次 O ( log ⁡ n ) O(\log n) O(logn) 地求出所需结果。

这也是一个经典的 trick。如果一个式子里含有两个变量,那一般的数据结构都是无法维护的。分离变量是一个很好的方法。

具体实现看代码。

考场上那些傻瓜错误:

  1. 有向图看成无向图(但其实主体思路没有太大变化!)。
  2. 没有考虑到 u u u 可以先走到子树再回根。
  3. 数组开太小了……

[Code] \color{blue}{\text{[Code]}} [Code]

int Fa[22][N],n,dep[N],q;
int u[N<<1],v[N<<1],w[N<<1],len[N];
int End[N],rec[N],dfscnt,Trans[N];
ll Len[N];
//len[i] 表示从 i 到 1 的直接边的长度 
//Len[i] 表示初始时 1 沿着树到 i 的总长度 struct Segment_Tree{int ls[N<<1],rs[N<<1],rt,ndcnt;ll sum[N<<1],tag[N<<1],minn[N<<1];void pushup(int o){sum[o]=sum[ls[o]]+sum[rs[o]];minn[o]=min(minn[ls[o]],minn[rs[o]]);}void pushdown(int o,int l,int r){tag[ls[o]]+=tag[o];tag[rs[o]]+=tag[o];minn[ls[o]]+=tag[o];minn[rs[o]]+=tag[o];int mid=(l+r)>>1;sum[ls[o]]+=tag[o]*(mid-l+1);sum[rs[o]]+=tag[o]*(r-mid);tag[o]=0;}void build(int &o,int l,int r,int tpe){o=++ndcnt;tag[o]=sum[o]=minn[o]=0;if (l==r){if (tpe==1) sum[o]=minn[o]=Len[Trans[l]];else sum[o]=minn[o]=Len[Trans[l]]+len[Trans[r]];return;}int mid=(l+r)>>1;build(ls[o],l,mid,tpe);build(rs[o],mid+1,r,tpe);return pushup(o);}void modify(int o,int l,int r,int p,int q,int v){if (p<=l&&r<=q){tag[o]+=v;minn[o]+=v;sum[o]+=1ll*v*(r-l+1);return;}if (tag[o]) pushdown(o,l,r);int mid=(l+r)>>1;if (p<=mid) modify(ls[o],l,mid,p,q,v);if (mid<q) modify(rs[o],mid+1,r,p,q,v);return pushup(o);}ll query(int o,int l,int r,int p){if (l==r) return sum[o];if (tag[o]) pushdown(o,l,r);int mid=(l+r)>>1;if (p<=mid) return query(ls[o],l,mid,p);else return query(rs[o],mid+1,r,p);}ll query(int o,int l,int r,int p,int q){if (p<=l&&r<=q) return minn[o];if (tag[o]) pushdown(o,l,r);int mid=(l+r)>>1;ll ans=1e18;if (p<=mid) ans=min(ans,query(ls[o],l,mid,p,q));if (mid<q) ans=min(ans,query(rs[o],mid+1,r,p,q));return ans;}
}SGT,sgt;struct edge{int nxt,to,len;
}e[N<<1];int h[N],ecnt;
void add(int u,int v,int w){e[++ecnt]=(edge){h[u],v,w};h[u]=ecnt;
}void dfs(int u,int fa){rec[u]=++dfscnt;Trans[dfscnt]=u;dep[u]=dep[fa]+1;Fa[0][u]=fa;for(int i=1;i<=20;i++)Fa[i][u]=Fa[i-1][Fa[i-1][u]];for(int i=h[u];i;i=e[i].nxt){int v=e[i].to;if (v==fa) continue;Len[v]=Len[u]+e[i].len;dfs(v,u);}End[u]=dfscnt;//记录 dfs 序 
}
int LCA(int u,int v){if (dep[u]<dep[v]) swap(u,v);for(int i=20;i>=0;i--)if (dep[Fa[i][u]]>=dep[v])u=Fa[i][u];if (u==v) return u;for(int i=20;i>=0;i--)if (Fa[i][u]!=Fa[i][v]){u=Fa[i][u];v=Fa[i][v];}return Fa[0][v];
}ll query(int u){return sgt.query(sgt.rt,1,n,rec[u],End[u])-SGT.query(SGT.rt,1,n,rec[u]);
}
ll query(int u,int v){ll res;if (u==v) return 0;if (LCA(u,v)==u) res=SGT.query(SGT.rt,1,n,rec[v])-SGT.query(SGT.rt,1,n,rec[u]);else res=query(u)+SGT.query(SGT.rt,1,n,rec[v]);return res;
}int main(int argv,char *argc[]){n=read();q=read();for(int i=1;i<n;i++){u[i]=read();v[i]=read();w[i]=read();add(u[i],v[i],w[i]);add(v[i],u[i],w[i]);}for(int j=1;j<n;j++){int i=j+(n-1);//真实边标号 u[i]=read();v[i]=read();//v[i] == 1w[i]=read();len[u[i]]=w[i];}dfs(1,0);SGT.build(SGT.rt,1,n,1);sgt.build(sgt.rt,1,n,2);for(int i=1;i<=q;i++){int opt=read(),s=read(),t=read();if (opt==1){if (s<n){//修改树上的边 SGT.modify(SGT.rt,1,n,rec[v[s]],End[v[s]],t-w[s]);sgt.modify(sgt.rt,1,n,rec[v[s]],End[v[s]],t-w[s]);//v[s] 的子树内所有点到 1 的距离发生变化 w[s]=t;}else{sgt.modify(sgt.rt,1,n,rec[u[s]],rec[u[s]],t-len[u[s]]);len[u[s]]=t;}}else printf("%lld\n",query(s,t));}return 0;
}

相关文章:

BUAA XCPC 2025 Spring Training 2

C \color{green}{\texttt{C}} C [Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] 给定一棵以 1 1 1 为根的树&#xff0c;记 a i a_{i} ai​ 表示节点 i i i 的权值&#xff0c; lca( i , j ) \text{lca(}i,j) lca(i,j) 表示节…...

Edge浏览器如何默认启动某个工作区 / 为工作区添加快捷方式

Edge浏览器的工作区确实非常好用&#xff0c;可以多端同步标签页。但是打开Edge时默认是没有在工作区的状态&#xff0c;这个状态下的标签页可能会丢失。所以我研究了一下&#xff0c;如何点击快捷方式时自动启动一个工作区&#xff0c;方法如下&#xff1a; 先找到WorkspaceCa…...

Cherry Studio搭建本地知识库,结合DeepSeek实现RAG

Cherry Studio搭建本地知识库&#xff0c;结合DeepSeek实现RAG CherryStudioCherryStudio 简介环境准备 模型配置本地知识创建1、新建知识库2、添加文件3、添加网址或者网站4、搜索知识库 结合DeepSeek实现RAG1、选择知识库2、进行提问 常见问题与解决方案 CherryStudio Cherr…...

【Android】VehiclePropertyAccess引起CarService崩溃

VehiclePropertyAccess引起CarService崩溃 VehiclePropertyAccess VehiclePropertyAccess属性&#xff0c;用于定义车辆属性的访问权限。权限包括 读&#xff1a;READ&#xff0c;只可以读取&#xff0c;不能写入。 VehiclePropertyAccess:READ写&#xff1a;WRITE&#xf…...

深度剖析:复制带随机指针的链表算法实现

在链表相关的算法中&#xff0c;复制一个带有随机指针的链表是一个经典且具有一定难度的问题。本文将深入分析一段用C语言实现的复制带随机指针链表的代码&#xff0c;通过模块化的方式详细解释每段代码的作用&#xff0c;帮助读者更好地理解这一复杂算法。 作者主页&#xf…...

Java 大视界 -- Java 大数据在智慧文旅旅游目的地营销与品牌传播中的应用(150)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

SQLMesh SCD-2 时间维度实战:餐饮菜单价格演化追踪

场景背景&#xff1a;动态菜单价格管理 考虑某连锁餐厅的菜单管理系统&#xff0c;需要记录食品价格的历史变更轨迹。业务需求包括&#xff1a; 记录每次价格调整的时间点支持历史价格查询&#xff08;如"2020年1月2日汉堡多少钱"&#xff09;维护当前有效价格清单…...

uniapp自身bug | uniapp+vue3打包后 index.html无法直接运行

前提&#xff1a; 已经修改了基础路径 打开打包文件&#xff0c;双击运行index.html报错&#xff0c;无法访问页面 uniappvue2项目是可以正常运行的 vue3修改publicPath: ./后&#xff0c;也是可以正常访问打包文件中的index.html 点进控制台提供的链接&#xff1a;https:/…...

数据分析面试--京东

1.考察日期函数的应用 select Order_date, count(distinct user_id) as uv from (select user_id, Order_date, row_number() over(partition by user_id order by Order_date) as new_tagfrom ord where date_diff(current_date(), Order_date)<30 ) t where new_tag1 gro…...

Centos7搭建Zabbix4.x监控HCL模拟网络设备:zabbix-server搭建及监控基础04

兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 4.OID查看工具Getif安装及使用 找度娘下载Getif&#xff0c;该软件比较老&#xff0c;可以用来查看OID编码&#xff0c;我的宿主机是Win11,无法安装。所以只有到虚拟机win12去安装&am…...

爬虫:scrapy面试题大全(60个scrapy经典面试题和详解)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. 什么是Scrapy?2. Scrapy 框架的组件及其作用?3. Scrapy的工作流程是什么?(运行机制)4. 如何创建一个Scrapy项目?5. 如何定义一个Spider?6. 如何在Scrapy中提取数据?7. Scrapy中的Item是什么?8. Scrapy中的P…...

Ubuntu Debian 系统下挂载 Samba 共享目录的完整指南

文章目录 Ubuntu & Debian 系统下挂载 Samba 共享目录的完整指南前提条件挂载 Samba 共享临时挂载避免明文密码永久挂载 常见选项卸载故障排查 Ubuntu & Debian 系统下挂载 Samba 共享目录的完整指南 想把NAS中的内容通过Samba挂载到 OrangePi 5B&#xff0c;但是 Ora…...

蓝桥杯2023年第十四届省赛真题-异或和之差

题目来自DOTCPP&#xff1a; 思路&#xff1a; 什么是异或和&#xff1f; ①题目要求我们选择两个不相交的子段&#xff0c;我们可以枚举一个分界线i&#xff0c;子段1在 i 的左边&#xff0c; 子段2在 i 的右边&#xff0c;分别找到子段1和子段2的最大值、最小值。 ②怎么确…...

考研课程安排(自用)

文章目录 408数据结构&#xff08;王道&#xff09;计算机组成原理&#xff08;王道&#xff09;操作系统&#xff08;王道&#xff09;计算机网络&#xff08;湖科大版&#xff09; 数学一高等数学&#xff08;微积分&#xff09;线性代数和概率论 408 数据结构&#xff08;王…...

linux命令行工具进阶

文章目录 前言ssh免密登录&#xff0c;免密码登录&#xff0c;公私钥查看与修改IP地址临时修改永久修改 mount临时切换根文件系统永久切换根文件系统loop文件partedinitramfsuboot command line总结 前言 本文记录了一些不经常用到&#xff0c;但在某个时刻需要用到的一些指令…...

Linux系统管理实战:文件权限配置、用户组协作与日志处理全解析

1、创建/www目录&#xff0c;在/www目录下新建name和https目录&#xff0c;在name和https目录下分别创建一个index.html文件&#xff0c;name下面的index.html文件中包含当前主机的主机名&#xff0c;https目录下的index.html文件中包含当前主机的ip地址。 &#xff08;1&…...

[自动化] 【八爪鱼】使用八爪鱼实现CSDN文章自动阅读脚本

在CSDN上&#xff0c;文章的阅读量往往是衡量内容影响力的一个重要指标。为了测试自动化手段能否提高阅读数&#xff0c;我尝试使用网页自动化工具来模拟人工阅读某个ID的文章。 1. 网页自动化的常见方案 谈到网页自动化&#xff0c;Selenium 是一个最常见的选择。它可以通过…...

Go语言分布式锁实战:dlock助力构建高并发稳定系统

在构建分布式系统时&#xff0c;一个常见且棘手的问题便是资源竞争和数据一致性问题。分布式锁作为一种常用的解决方案&#xff0c;在多个进程或节点之间协调访问共享资源时显得尤为重要。今天&#xff0c;我们将介绍一款分布式锁库——dlock&#xff0c;并通过详细的使用示例带…...

如何提高G口服务器的安全性?

G口服务器可以支持千兆网络传输速度&#xff0c;能够为企业提供更快的数据处理能力和传输能力&#xff0c;随着网络流量的不断增长以及复杂计算任务的普及&#xff0c;企业对于网络带宽的要求也在相应提高&#xff0c;而G口服务器则可以降低网络的延迟度&#xff0c;大幅度提高…...

为没有CMake配置的第三方库添加CMake配置

1 编写CMakeLists.txt cmake_minimum_required(VERSION 3.15) #如果你第三方库和自己的库没有xxxConfig.cmake #请修改项目名称和命名空间&#xff08;一般不需要&#xff09; project("pthreads" LANGUAGES C CXX) set(KC_NAMESPACE "") #set(K…...

Linux驱动编程 - seq_open、single_open使用方法

目录 前言: 一、seq_xxx 1、seq_xxx 函数介绍 1.1 seq_open 1.2 seq_read 1.3 seq_lseek 1.4 seq_release 1.5 格式化输出函数 2、seq_open 实例 二、single_xxx 函数 1、single_xxx 函数介绍 1.1 single_open 1.2 single_start 1.3 single_next 1.4 single_stop…...

N列股票收盘价为起点的马科维茨(Markowitz)均值—方差理论

1. 数据准备与收益率计算 输入数据&#xff1a; 假设你有一个矩阵&#xff0c;每一列代表一只股票的历史收盘价序列。每一行对应一个时间点的收盘价。 计算收益率&#xff1a; 马科维茨理论要求使用资产的收益率而非价格。常用的收益率计算方法有对数收益率或简单收益率。 2.…...

【嵌入式学习2】函数

目录 ## 函数 ## 函数分类 ## 函数定义 1、无参数无返回值 2、有参数无返回值 3、有参数有返回值 ## 函数声明 ## 局部变量和全局变量 ## 多文件编程 如何避免把同一个头文件 include 多次&#xff0c;或者头文件嵌套包含&#xff1f; 命令行编译文件 头文件包含的…...

模式搜索+扩散模型:FlowMo重构图像Token化的技术革命

图像Token化作为现代生成式AI系统的核心技术&#xff0c;长期面临对抗性训练不稳定、潜在空间冗余等挑战。斯坦福大学李飞飞与吴佳俊团队提出的FlowMo&#xff08;Flow towards Modes&#xff09;创新性地融合模式搜索与扩散模型&#xff0c;在多个关键维度突破传统方法局限&am…...

mac brew 安装的php@7.4 打开redis扩展

1. 找到php7.4的pecl目录 一般在这个位置 cd /usr/local/Cellar/php7.4/7.4.33_8/pecl/20190902 ls 一下 有个 redis.so 于是 直接去php.ini编辑了 php.ini的路径 vim /usr/local/etc/php/7.4/php.ini 把938行添加进去 然后重启一下 php7.4 brew services restart ph…...

OSPF多区域通信

作业要求: 1、多区域0SPF area 0、area10、are20 2、AR5、AR6作为stub区&#xff0c;使用环回接口与Pc1进行通信 第一步&#xff1a;为各端口配置IP地址 AR1: <Huawei>sys [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 5.5.5.1 24 [Huawei-GigabitEther…...

C++模板编程与元编程面试题及参考答案(精选100道题)

目录 解释 C++ 模板的实例化过程,显式实例化与隐式实例化的区别 模板函数在不同翻译单元中的 ODR(单一定义规则)问题 模板参数推导失败的可能场景及解决方法 模板函数中 auto 返回类型的推导规则 如何限制模板函数仅接受特定类型的参数?(非 C++20 概念场景) 函数模板…...

括弧匹配检验(信息学奥赛一本通-1354)

【题目描述】 假设表达式中允许包含两种括号&#xff1a;圆括号和方括号&#xff0c;其嵌套的顺序随意&#xff0c;如&#xff08;&#xff3b; &#xff3d;&#xff08;&#xff09;&#xff09;或&#xff3b;&#xff08;&#xff3b; &#xff3d;&#xff3b; &#xff3…...

三、重学C++—C语言内存管理

上一章节&#xff1a; 二、重学C—C语言核心-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/146191640?spm1001.2014.3001.5502 本章节代码&#xff1a; cPart2 CuiQingCheng/cppstudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/cppstudy/tree/…...

算法题(105):小猫爬山

审题&#xff1a; 本题需要我们找出将n个小猫放在有限重的缆车上运下山所需的最小缆车数 时间复杂度分析&#xff1a;本题的数据量小于等于18&#xff0c;所以我们在做好剪枝的前提下可以使用深度优先搜索解题 思路&#xff1a; 方法一&#xff1a;dfs 搜索策略&#xff1a;将小…...