- 博客(18)
- 收藏
- 关注
原创 P1491 集合位置
为什么要这么处理,如果删去的边不是最短路上的边,那么不会对最短路造成影响。而次短路与最短路路径一定不会重合,因此可以枚举最短路路径上的边,每次删去一条后再去求解最短路,最后的结果一定是次短路。如何进行删边操作,可以在求解初始图最短路时记录更新节点的前驱节点,然后在之后求解最短路过程中判断此时的两个节点是否是最短路径一条边上相邻的两个节点。本题为次短路模板题,如何求解次短路,可以先求一次最短路,然后依次尝试删去最短路的一条边,然后再跑一次最短路,记录答案,最后求解出来的便是次短路。写两种不同的最短路函数;
2024-05-27 21:27:33
186
原创 洛谷 P5018 对称二叉树
1:结构相同,如果两棵树都为空树,则他们是对称二叉树,如果一棵非空,一棵空树,那么就不是对称二叉树。由于是对称二叉树,因此我们递归判断左子树和右子树是否对称。2:权值相同,只需比较两个结点的权值。
2024-03-14 21:42:50
331
1
原创 洛谷 P1378 油滴扩展
(2):判断当前油滴与其他油滴的关系:是否位于其他油滴内,最多只能与其他 油滴相交。本题可以利用dfs计算,重点是计算某一个油滴可以扩展的半径,并搜索得出所有油滴可以扩展的最大面积。由题意可知:(1):油滴的半径不能越过长方形方框的边界。
2024-03-14 21:30:11
471
1
原创 洛谷 B3625迷宫寻路
由于本题的n,m取值范围[1,100],所以如果采用回溯法肯定会超时,并且由于此题只需要判断机器猫能否走到终点,因此采用洪水填充法,即搜索后不需要回溯。并且只要搜索到终点就输出Yes,然后直接退出程序,不要写成return,否则可能输出多个Yes。本题是一道简单的迷宫问题,但需要注意很多地方。
2024-03-14 21:17:32
361
1
原创 洛谷P2066 机器分配
首先进行阶段划分,可将解决问题的过程看作逐一为每家公司分配机器,因此按照已分配公司数量划分阶段,设变量i代表前i家公司。由于还要输出方案,因此可用g[i][j]维护当状态f[i][j]取得最优解时的决策k,最后递归输出。确定边界f[i][0]=0,目标解为f[n][m]即前n家公司分配m台设备能产生的最大盈利。确定状态转移方程f[i][j]=max(f[i-1][j-k]+a[i][k])设计状态,设f[i][j]代表前i家公司分配j台设备能产生的最大盈利。此题可用动态规划解决,
2024-02-28 21:52:14
557
原创 洛谷 P4799 [CEOI2015 Day2] 世界冰球锦标赛
dfs(int k,long long sum),k表示第k场比赛,sum表示当前费用总和,时间复杂度为2的n次方。即将所有比赛分为两部分,对这两部分分别进行搜索,将产生的花费分别保存起来,最后再将两部分结果合并起来,得到答案。本题为一道深度优先搜索题,每场比赛有看和不看两种状态,所以可以写一个函数。题中N<=40,因此直接搜索会超时,所以可以通过折半搜索进行优化。
2024-02-28 20:58:01
369
原创 P1106 删数问题
本题可以使用贪心,每次从头开始找山峰(即a[i]>a[i+1]),并删除a[i],即将i+1及之后的字符往前移一位,如果没有“山峰”,则直接删除最后一位。注意:本题看样例的话很容易想到:每次只需删除数中最大的一个数字,然而这是错误的贪心策略,故应转换思路。
2024-01-21 21:11:00
355
1
原创 P2082 区间覆盖(加强版)
本题是一道区间问题,很容易想到贪心的方法,将区间左端点l排序,然后从左到右维护,R表示已经贪心到的最右端的边界,如果当前的右边界大于等于R就加上不重复覆盖的区间长度,同时更新R。
2024-01-21 20:58:58
336
1
原创 P1582 倒水
计算需要买多少新瓶子时,要从x的最低位的1往上加,可以逐步减少1的个数。由上表可知:x个瓶子合成的瓶子个数=x转换为2进制后1的个数。
2024-01-04 21:13:50
343
1
原创 P1308 统计单词数
2.可以将给定文章中的单词一一分割出来,再依次判断其是否与所给单词相等。1.首先将单词和给定文章均转化为大写字母或小写字母。可以使用substr函数求字串。
2023-12-15 21:58:00
26
原创 P3799 妖梦拼木棒
也就是说,在这4根木棒中,首先要有两根木棒长度相等,然后另外两根木棒长度之和与它们相等。定义num数组,当num[i]>=2时,从最小值到i/2枚举,利用上述公式求出方案数。在n个数中选择m个(不重复)那么可以选择的方案数为。要从n根木棒中选出4根,使他们能组成一个正三角形。因此,可以使用桶排序的思想,计算每个数出现的次数。这道题需要用到组合数学的知识。
2023-12-15 21:48:43
14
原创 P1957 口算练习题
这需要用到to_string() 将一个整数int转换为字符串string(devc++如果要使用此函数,需要在编译选项中在编译时加入以下命令:-std=c++11)如何实现对输入数据是字符”a、b、c“还是整数的判断,可以使用字符串,并定义临时变量temp来储存运算符。通过if函数,当第一个输入的为“a、b、c”时,输入两个整数,并使temp等于输入的字符。这一题的关键是对输入的判断和求出算式的长度。计算算式的长度,可以利用字符串来求。输入的字符串转化为整数。
2023-12-15 21:24:54
28
原创 P1125 笨小猴
当maxn-minn不是质数时,“No Answer”下一行要输出一个“0”,输出 maxn−minn 的值,否则输出 0。第二行是一个整数,如果输入单词是。加上“\n0"后ac :(没输出“0” 50分。
2023-12-15 21:13:26
15
原创 P1321 单词覆盖还原
数据保证,3\le l\le2553≤l≤255,字符串仅仅包含如下字符:\texttt{.bgilory}.bgilory。两单词,后贴上的可能覆盖已贴上的单词(没有被覆盖的用句点表示),最终每个单词至少有一个字符没有被覆盖。2:”bo“或“oy”2中bo或oy是单词中相邻的 如果是“by"就不成立。一个长度为 ll 的字符串中被反复贴有。分析找到boy的情况: 1.“boy”girl同理:1.“girl”
2023-12-09 08:35:20
20
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人