随笔分类 - 洛谷题解
摘要:PART 01:思路 我们知道最后的字符串一定是一个左右两边为括号的串,所以先找一波括号。 第一步,找左右括号。 接着在两个括号之间找出两个冒号,所以还要存下左右括号的下标。 第一步,找左右括号并存下下标。 第二步,找左右冒号。 最后在两个冒号之间找 字符,所以还要存下冒号的下标。 第一
阅读全文
摘要:题目传送门 可能更好的阅读体验 思路 很简单的贪心,我们可以把打分的情况分为三种讨论。 显然,如果要使得答案尽量大,就尽量把除最小得分以外的分数都加成最大的分数。我们可以假设要把除最小值、最大值以外的分数都变成最大分需要加 分,这样就可以举出三种情况: 1.,刚好可
阅读全文
摘要:思路解析 这题主要分为两个部分:回文,字符串。 字符串的部分可以使用 C++ 自带的 型变量(字符串)进行操作,这题要用到 型变量中自带的可以返回字符串长度的length()函数。 回文的部分,我们可以根据题目内对回文的
阅读全文
摘要:思路 考虑分情况讨论。 我们可以枚举出有一个空格、两个空格、三个空格、全是空格的情况,再跑DFS,可以使用记忆化搜索进行优化。 实现 2.1:编写判断函数 为了判断目前的状态与我们需要的状态是否一致,可以直接写一个 函数判断: bool check(int x,i
阅读全文
摘要:思路 欧拉路径的性质在于,起点入度比出度少一(图是一个环除外),终点出度比入度少一(图是一个环除外),其它点的入度和出度相等。 所以我们只要先用 读入边,再 判定是否有起点和终点即可。值得注意的是,因为欧拉路径每条边必须走且只能走一次,我们有必要在存边的时候,同时
阅读全文
摘要:思路 把建出来的树进行 DFS,用类似最短路的方法跑出一个视频到每个视频的相关性(下文中用“单源相关性”描述)。为了防止多次跑同一个视频的 “单源相关性”,可以使用一个二维数组记录,第二次询问到这个视频时可以直接读取。 代码 2.1 建树 for(int i=1;i<=n-1;i++){ int x
阅读全文
摘要:solution-p4380
阅读全文
摘要:考场上唯一 A 的题,T3 因为没写返回值造成的差异爆掉了。 题意简述 在开区间 取一个数 使得 的最大。 思路 很容易想到暴力,把 到 全扫一遍就行,得分 。 但是可以发现,在 这一段
阅读全文
摘要:前情提要 考场上写出了这题满分做法(无论是民间数据还是官方数据),可惜少了一句return true;造成 RE……,于是一等奖变三等奖(可能压线二等),Lemon 衷心希望大家不再犯这样的错误写了这篇题解。 思路 考虑分成两个部分,判断合法和连接服务机(或建立连接)。 第二个部分可以通过 STL
阅读全文
摘要:思路 求最大值,不是二分答案就是贪心。这里很难二分所以考虑贪心。很容易想到贪心策略,从左往右扫,右侧的数 就减,右侧的数 就加,如果右侧的数是 无所谓。 考虑证明。对于 个数(假设第一个是 ,第二个是 )的情况明显有: 当 \(
阅读全文
摘要:这题非常有意思。 思路和代码 首先观察那份 Pascal 代码,由于 Pascal 代码非常好懂,即使是 C++ 党也能轻易看懂,所以这里不再赘述分析过程。我们可以转出下面的代码: for(int i=n-1;i>=1;i--){ cnt++; if(n%i==0){ break; } } cout
阅读全文
摘要:思路 模拟。 考虑计算字符串中匹配括号的个数。因为每一个匹配括号组一定对应了一个()的子序列,而我们需要使得匹配的括号子序列最多,所以匹配括号的个数一定等于匹配括号子序列的最多个数。 先求一下匹配括号的个数,看看是不是 即可。 代码 非常好写。 void solve(
阅读全文
摘要:思路 考虑先构造数列使得乘积等于 。 明显地,直接对 分解质因数即可。由于这样分解出来的数列具有最小和,所以判断仅由 质因数组成的数列和 与 的大小关系即可。 如果 ,就可以直接输出了。但是 怎么办呢
阅读全文
摘要:思路 考虑先确定一个数可不可以被报出来。 考虑递归定义布尔函数 表示 不可以报出来,那么: \[ \begin{cases} 1, &f(x\bmod 10)\land x\bmod 10\neq 7 \\ 1, &\forall y|x\land f(y) \\ 0,
阅读全文
摘要:前置知识 您需要知道如何求桥,否则请移步 P1656 炸铁路 的 Tarjan 做法。 您需要知道边双连通分量的基本性质。 思路 提示:接下来所有形似“ 路径的点权和”的描述中,点权和都包括 的点权。 当火星猫走过一条路之后,这条路就不能再走了 从这句话我们可以想
阅读全文