摘要: 前言 一开始做这道时,感觉very简单,有手就会,结果后面感觉到难了(难道我没手?)。然后(小汪同学^ _ ^撤回了一条消息)。 另:不懂最大字段和的可以先做这道题。 解法 一开始我是用枚举起点的方法做的,喜提 \(40pts\)。 随后我又突发奇想,断环成链,再控制长度,是不是就能找到最优解呢? 阅读全文
posted @ 2026-06-03 20:09 小汪同学^_^ 阅读(5) 评论(0) 推荐(0)
摘要: 前言 应该有人会跟我一样,卡了十几分钟的 \(vector<pair<int, int>>\) 的用法吧。 Solution 首先,我们应该知道,如果车队最后要返回根节点,那么\(ans\) 就是所有路径之和 * 2。但是这题说车队可以不返回根节点,那么贪心一下,以离根节点路径最长的叶子结点为终点。 阅读全文
posted @ 2026-05-29 19:30 小汪同学^_^ 阅读(4) 评论(0) 推荐(0)
摘要: 当我看到数据范围的那一刻,\(10^9\)给我吓死了。 Solution 看到数据范围千万不要慌,先考虑直接建树,可是\(10^9\)不给你MLE就算好的了,于是考虑走一步看一步。 既然是两个节点的距离,那么就可以一直然当前大的节点先跳到父节点,同时让次数加一,直到节点相同再返回次数。 看到这儿你会 阅读全文
posted @ 2026-05-25 18:55 小汪同学^_^ 阅读(26) 评论(0) 推荐(0)
摘要: 如果对dp不熟,可以先看这篇文章 接上文—— 发完上一篇随笔后,我灵光一闪,想到了用DP做的思路。 于是就写下了这篇随笔(好像是废话)。 1.思路1 考虑用 \(dp[i]\) 来存储 \(1\) ~ \(i\) 的最优解,可是后面你会发现…… 根 本 解 不 出 来 ! 只是因为再求 \(dp[i 阅读全文
posted @ 2026-05-20 20:21 小汪同学^_^ 阅读(16) 评论(0) 推荐(0)
摘要: 还是题目传送门 这题说实话,雀食很难。(我才不会告诉你我想了1个多小时)我认(kan)真(le)思(ti)考(jie)才知道这题要用DFS传输3个数据:是否为完全二叉树、是否为满二叉树、深度。 Solution 要知道这颗子树是否为完全二叉树,要判断这几个条件: 当自己的两颗子树深度相同时 1.当右 阅读全文
posted @ 2026-05-17 21:29 小汪同学^_^ 阅读(39) 评论(1) 推荐(0)
摘要: 见dp方法看下文↓ dp方法 LIS已经有很多dalao讲过了,而我这个蒟蒻愣是连方程都没推出来(我好菜) 于是乎,我就用个记忆化来写。 思路 既然是搜索,那么就先找条件。 本题的条件是 \(a_{1} < a_{2} < …… < a_{n}\) 那么便可写出 if(a[i] < a[n]) an 阅读全文
posted @ 2026-05-16 21:46 小汪同学^_^ 阅读(16) 评论(0) 推荐(0)
摘要: 依旧题目传送门…… 前言 讲实话,当我看到这题的标签时,吓了一大跳(OS:CCF还是太阴了) 废话不多说,直接讲正解 正解 首先,当第i个节点为叶子节点时,代价肯定是 \(c[i]\) 的。 那么,我们遍又双又叕便可知道第i个节点有very多个节点时,代价最小肯定是$ c[i] $与他的所有孩子的最 阅读全文
posted @ 2026-05-09 21:20 小汪同学^_^ 阅读(12) 评论(0) 推荐(0)
摘要: 题目传送门 一道水黄 思路 思路很简单,就是先用物理攻击,如果在中途出现 h 为质数的情况,就可以用魔法 攻击一击必杀,否则一直攻击到不能再攻击的时候。然后再看 h 是否为零,为零输 出攻击次数,否则输出-1. 代码 #include<bits/stdc++.h> using namespace s 阅读全文
posted @ 2026-05-05 08:59 小汪同学^_^ 阅读(17) 评论(1) 推荐(0)