摘要: 题目传送门 题目大意 从一个点 \(S\) 到另一个点 \(T\),截断指定点使 \(S\) 和 \(T\) 不连通,并且费用最小,求截断哪些点。 思路 显然是最小割。 但是我们需要切割边而不是点,因此我们需要将指定点分成两个点,之间连一条流量为费用的边。所以对于一个指定的点 \(i\), 可以从 阅读全文
posted @ 2024-07-11 12:30 GyrthCurunír 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 闲话 蒟蒻的第一篇黑题题解! 连着花了 \(12\) 个小时才做出来,打代码 \(6\) 小时,调试 \(6\) 小时。 一开始怎么编也编不过,直到看到了 tiger 大神的题解才豁然开朗。 思路 本题主要是输出函数或运算式子的结果,最重要的就是判断优先级。 tiger 大神提出了表达式 阅读全文
posted @ 2024-02-25 12:31 GyrthCurunír 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 蒟蒻的第一篇紫题题解! 题目传送门 思路 一眼模拟,还是大模拟。不由得想起了我编了 \(4\) 个小时的猪国杀…… 输入 首先处理输入,这里我们用一个字符串数组来存储所有的输入,然后再进行处理。 while(getline(cin,sr))str[++cnt]=sr+'\n'; 处理时需要双重循环, 阅读全文
posted @ 2024-02-23 20:48 GyrthCurunír 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题目大意 这个题目简化一下就是求 \(n\) 个数中取 \(k\) 个数按位与的最大值 思路 很容易想到贪心。 题中说道输入的数在二进制下最多 \(29\) 位,所以我们从 \(29\) 开始遍历二进制位,如果当前位有大于等于 \(k\) 个 \(1\),那么标记一下这些数,可以发现剩下 阅读全文
posted @ 2024-02-02 16:23 GyrthCurunír 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 分块 我们先引入一道题: 有一个长度为 \(N\) 的数列 \(A\),然后输入 \(Q\) 行指令操作。一种是将数列中 \(l \sim r\) 个数都加 \(d\),另一种则是询问数列中 \(l \sim r\) 个数的和。 用线段树或树状数组能在 \(\mathcal{O}((N + Q)\l 阅读全文
posted @ 2024-01-21 10:22 GyrthCurunír 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 思路 先看数据范围,我们发现两个字符串的长度最大会达到 \(5 \times 10^7\)。 这立刻打消了我用暴力的想法。 于是,我选择了用 KMP 模式匹配,这一个能够在线性时间内判定字符串 \(A\) 是否是字符串 \(B\) 的字串,并求出字符串 \(A\) 在字符串 \(B\) 阅读全文
posted @ 2024-01-20 17:23 GyrthCurunír 阅读(11) 评论(0) 推荐(0) 编辑
摘要: KMP模式匹配 KMP 算法能够在线性时间内判定字符串 \(A\left[1\sim N\right]\) 是否是字符串 \(B\left[ 1 \sim M\right]\) 的字串,并求出字符串 \(A\) 在字符串 \(B\) 中各次出现的位置。 详细来讲,KMP 算法分为两步。 对字符串 \ 阅读全文
posted @ 2024-01-20 16:53 GyrthCurunír 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 思路 首先我们需要依据输入来建立一棵树并将 \(d\) 数组求出来,此操作我们可以用链式前向星来存树,然后 dfs 算出 \(d\) 数组。 接着我们需要把题目上给我们的式子推出来: \[\operatorname{f}\left(a, b, c \right) = \left(a - 阅读全文
posted @ 2024-01-20 11:53 GyrthCurunír 阅读(7) 评论(0) 推荐(0) 编辑
摘要: ST 算法 ST 算法是一种运用倍增来解决 RMQ 问题也就是区间最值问题的算法。 给定一个长度为 \(N\) 的序列 \(A\),ST 算法能在 \(\mathcal O(N \log N)\) 的时间预处理后,以 \(\mathcal O(1)\) 的时间在线回答区间最值问题。 设 \(F_{i 阅读全文
posted @ 2024-01-17 21:47 GyrthCurunír 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 线段树(Segment Tree) 1.建树 首先我们要明白线段树中的每个节点都代表一个区间,而对于线段树中的每个内部节点 \(\left[l,r\right]\),它的左子节点是 \(\left[l,mid\right]\),右子节点是 \(\left[mid + 1,r\right]\),其中 阅读全文
posted @ 2024-01-17 21:27 GyrthCurunír 阅读(2) 评论(0) 推荐(0) 编辑