CCCC L3习题集
Contents
L3-001 凑零钱
题意:n 个硬币,要付 m 元,输出硬币面值$v_1\le v_2\le\cdots\le v_k$,输出满足条件$v_1+v_2+\cdots+v_k=m$的最小序列。
法一:dfs。法二:0-1 背包。
法一
|
|
法二
|
|
L3-002 特殊堆栈
题意:在实现栈的基础操作上,实现取中值操作。
法一:树状数组+二分求第 $\lceil\frac{n}{2}\rceil$ 小。
|
|
法二:c++ with stl。
|
|
L3-003 社交集群
题意:第 $i$ 个人有 $k_i$ 个兴趣爱好,拥有相同兴趣爱好的人在一个社交集群,求有多少个社交集群和每个集群的人数。
很水的并查集。
|
|
L3-004 肿瘤诊断
题意:求所有体积不小于 t 的连通块总体积。
三维 bfs 即可。
|
|
L3-005 垃圾箱分布
题意:$n(\le10^3)$ 个居民点,$m(\le10)$ 个垃圾箱侯选地,$k(\le10^4)$ 条道路,$maxd$ 表示居民点与垃圾箱之间不能超过的最大距离,居民点从 $1$ 到 $n$ 编号,垃圾箱侯选地从 $G1$ 到 $Gm$ 编号,求最佳垃圾箱候选地,使得该位置到所有居民点最短距离最大,并且每个居民点距离不超过 $maxd$。如果解不唯一,则输出到所有居民点的平均距离最短的那个解。如果这样的解还是不唯一,则输出编号最小的地点。
对每个候选地 dijkstra,第一个样例貌似错了。
|
|
L3-007 天梯地图
题意:$n(2\le n\le500)$ 个点,$m$ 条道路,每条道路长度,和通过该道路所需时间,如果最快到达路线不唯一,则输出几条最快路线中最短的那条。而如果最短距离的路线不唯一,则输出途径节点数最少的那条。
裸模板题,两次 dijkstra 分别求最短路径和最快路径。
|
|
L3-008 喊山
题意:给出 n 个点,m 个连接关系,k 个询问点求距该点最远的点。
以询问的点为根层序遍历。
|
|
L3-010 是否完全二叉搜索树
题意:将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。
按性质建树,左右子树分别为 rt<<1
和 rt<<1|1
,最后按顺序遍历输出并判断是否完全二叉树。
|
|
L3-013 非常弹的球
题意:小球以一定动能斜抛出,求停止时最远距离。
$\angle{ans}=45\degree$ 时,$s_{max}=\frac{2E}{mg}$。
|
|
L3-015 球队“食物链”
题意:给出 $n$ 个球队,$n\times n$ 场联赛结果表,其中第 $i$ 行第 $j$ 列的字符为球队 $i$ 在主场对阵球队 $j$ 的比赛结果:$W$ 表示球队 $i$ 战胜球队 $j$,$L$ 表示球队 $i$ 负于球队 $j$,$D$ 表示两队打平,$-$表示无效(当 $i=j$ 时),找出食物链,存在多条找出字典序最小的。“食物链”为一个 $1$ 至 $n$ 的排列 $\{T_1 T_2 ⋯ T_N\}$,满足:球队 $T_1$ 战胜过球队 $T_2$,球队 $T_2$ 战胜过球队 $T_3$,⋯,球队 $T_{n−1}$ 战胜过球队 $T_n$,球队 $T_n$ 战胜过球队 $T_1$。
只需要记录胜利的情况即可,dfs 中需要进行剪枝。
|
|
L3-016 二叉搜索树的结构
题意:根据给出的序列建立二叉搜索树,并给出一些询问,判断是否正确。
数组建树,模拟即可。
|
|
L3-018 森森美图
题意:计算出了一个图像中所有像素点与周围点的相似程度的分数,分数越低表示某个像素点越“像”一个轮廓边缘上的点。给出起点 A 和终点 B,连接这两个点的直线就将图像分为两部分,然后在这两部分中分别寻找一条从 A 到 B 且与轮廓重合程度最高的曲线。
忽略正好位于连接A和B的直线(注意不是线段)上的像素点,即不认为这部分像素点在任何一个划分部分上,因此曲线也不能经过这部分像素点。曲线是八连通的,但为了计算准确,某像素连接对角相邻的斜向像素时,得分额外增加两个像素分数和的$\sqrt{2}$倍减一。
利用叉积判断与直线的关系,bfs 2 次找两部分最小值。
|
|
L3-020 至多删三个字符
题意:给定一个全小写英文字母字符串(长度在 $[4,10^6]$),允许最多删掉 3 个字符,可以得到多少种不同字符串。
用 $dp[i][j]$ 表示前 $i$ 个字符删去 $j$ 个得到不同字符串的数量。则
- 删去第 $i$ 个字符,$dp[i][j+1]+=dp[i-1][j]$。
- 不删第 $i$ 个字符,$dp[i][j]+=dp[i-1][j]$。
这样会计算进很多重复方案,比如 $i$ 前的一个位置 $k$ 满足 $str[i]==str[k]$,并且两个位置距离小于删去的字符数,删掉第 $k$ 个和删掉第 $i$ 个得到字符串相同,需要去掉这种情况,即 $dp[i][j]-=dp[k-1][j-(i-k)]$。
|
|
L3-021 神坛
题意:给出 $n(3\le n\le5000)$ 个点,选择 3 个点,求组成三角形(可共线)的面积最小值。
利用叉积算面积,极角排序遍历相邻两个向量求最小值。
|
|
L3-022 地铁一日游
题意:森森决定用以下的方式坐地铁:在某一站上车(不妨设为地铁站 A),则对于所有车费相同的到达站,森森只会在计费距离最远的站或线路末端站点出站,然后用森森美图 App 在站点外拍一张认证照,再按同样的方式前往下一个站点。在给定出发站的情况下(在出发时森森也会拍一张照),他的整个旅程中能够留下哪些站点的认证照?
留下认证的站点:线路起点终点以及出站点为某个车费中最远的站点。
|
|
L3-025 那就别担心了
题意:n 个点和 m 条有向边,给出起点终点 A B,求 A 到 B 的路径条数,判断从 A 出发是否只会到 B。
建图删掉除多余的点,从 A 拓扑到 B。
|
|