摘要: 思路 首先,我们得清楚如何判断三点共线。 对于每一个点,它的横纵坐标都有这么一个关系:\(n \times x + m = y\)(其中 \(n,m\) 为常数)。 那么,对于三点共线的点来说,\(n,m\) 是相同的。因此我们得出三个式子。 \[ n \times x_a + m = y_a \] 阅读全文
posted @ 2024-06-22 10:56 WBIKPS 阅读(29) 评论(0) 推荐(0)
摘要: 思路 其实很简单,我们可以将所有数值相同的值的下标存入一个 vector 里面。因为,我们既然要查找 \(X\),不妨把所有值为 \(X\) 的下标存在一起,方便查找。(可以在输入的时候完成) 我们不妨在每一个数值后面添加一个哨兵,然后二分查找第一个大于等于 \(l\) 的数和第一个大于等于 \(r 阅读全文
posted @ 2024-06-22 10:56 WBIKPS 阅读(39) 评论(0) 推荐(0)
摘要: 思路 对于包含数 \(x\) 的卡牌,两张之中必定要选择一张,由此想到 2-SAT 的思想。 我们将所有带有 \(x\) 的卡牌两两连边,每一条边连接的点都表示两点必须选择一个。 不难发现,我们这样会得出若干个环。(因为对于每一张卡牌的出边为 \(2\),一定会形成环) 在每一个环中的选择情况,不会 阅读全文
posted @ 2024-06-22 10:56 WBIKPS 阅读(23) 评论(0) 推荐(0)
摘要: 思路 题目要求的是 \(\max_{a = 1}^{n}\{\sum_{i = 1}^{a}\sum_{j = 1}^{a}{A_j}\}\),所以我们将 \(\sum_{i = 1}^{a}\sum_{j = 1}^{a}{A_j}\) 化简一下,得: \[ i \times A_1 + (i - 阅读全文
posted @ 2024-06-22 10:55 WBIKPS 阅读(20) 评论(0) 推荐(0)
摘要: 思路 首先对于这种题目多半是要先以 \(a_i\) 排序的,这样我们可以消除 \(a_i\) 的限制,只需要考虑 \(b_i\) 的限制即可。 定义 \(dp_{i,j}\) 表示在前 \(i\) 个人中选 \(j\) 个人的合法方案数。但是这样不知道前面选取人的 \(b_i\) 的大小。 因此,重 阅读全文
posted @ 2024-06-22 10:55 WBIKPS 阅读(16) 评论(0) 推荐(0)
摘要: 思路 将小于等于 \(x\) 的元素赋为 \(1\),其余的赋为 \(0\)。那么一个区间内小于等于 \(x\) 的数量就是区间中 \(1\) 的数量。 那么,将区间升序排列就是将 \(1\) 先堆在前面,将 \(0\) 堆到后面;降序排列同理。 考虑动态维护 \(x\) 的位置,记其位置为 \(t 阅读全文
posted @ 2024-06-22 10:55 WBIKPS 阅读(19) 评论(0) 推荐(0)
摘要: 思路 首先对所有的 \(c\) 从小到大排序,然后对于每一个值如果之前能凑出就不选,否则就选。 这样做显然是对的。令 \(p_1,p_2,\dots,p_{2^n-1}\) 表示将 \(c\) 排序之后,对应原来的下标;\(S\) 表示选出数的集合;\(S'\) 表示最终选出数的集合。可以证明两个问 阅读全文
posted @ 2024-06-22 10:55 WBIKPS 阅读(17) 评论(0) 推荐(0)
摘要: 思路 直接将输出的答案分为两个分考虑。 (1) 考虑二分 + DP。 设当前二分出的平均数为 \(x\),如果合法,那么有(其中 \(p\) 为选出数下标的集合): \[ \frac{a_{p_1} + a_{p_2} + \dots + a_{p_k}}{k} \geq x \]即: \[ \fr 阅读全文
posted @ 2024-06-22 10:52 WBIKPS 阅读(38) 评论(0) 推荐(0)
摘要: 思路 定义 \(dp_i\) 表示将前 \(i\) 个分为若干段的价值总和。容易得到状态转移方程: \[ dp_i = \sum_{j = 1}^{i - 1}{dp_j \times (\max_{k = j + 1}^{i}\{a_k\} - \min_{k = j + 1}^{i}\{a_k\ 阅读全文
posted @ 2024-06-22 10:51 WBIKPS 阅读(18) 评论(0) 推荐(0)
摘要: 思路 一眼可以把两个可以交换的数之间建一条边,显然在一个连通块里面的元素可以两两之间交换。 由于是排列,每一个元素 \(i\) 最终的位置是 \(i\)。 考虑将元素从小到大放置,令 \(ad_i\) 表示当前 \(i\) 元素的位置。 现在我们想让 \(i\) 换到 \(i\) 位置上,并且想使用 阅读全文
posted @ 2024-06-22 10:51 WBIKPS 阅读(19) 评论(0) 推荐(0)
摘要: 思路 首先有一个显然的贪心策略,就是先用大面值的,再用小面值的。 因为 \(n \neq 60\),先考虑搜索。 对于搜索到剩余 \(x\) 元,当前用 \(A_u\) 面值的时候。可以分为两种情况: 不找零,其答案为 a = x / a[u] + dfs(u - 1,x % a[u])。 找零,其 阅读全文
posted @ 2024-06-22 10:51 WBIKPS 阅读(25) 评论(0) 推荐(0)
摘要: 思路 首先,转化一下题面,对于每一次操作,相当于在原序列的前缀和数组 \(s\) 中删除一个数。 \(dp_i\) 表示操作 \(1 \sim i\) 能得到的序列个数。 如果 \(a_i\) 在 \(1 \sim i - 1\) 中没有出现过,状态转移方程为 \(dp_i = dp_{i - 1} 阅读全文
posted @ 2024-06-22 10:51 WBIKPS 阅读(23) 评论(0) 推荐(0)
摘要: 思路 首先需要知道一个事情,对于一个数 \(x = \prod{p_i^{c_i}}\),它的约数个数是: \[\prod{(c_i + 1)} \]那么先将 \(\binom{k}{n}\) 展开: \[\frac{\prod_{i = n - k + 1}^{n}i}{k!} \]发现一个数的约 阅读全文
posted @ 2024-06-22 10:51 WBIKPS 阅读(23) 评论(0) 推荐(0)
摘要: 思路 Part 1 弱化版 看到这道题的第一眼想到了 P1012 这道题。 但是,这两道题选择的数量是有区别的。 我们可以由拼数得出一个结论性的排序规则(这里就不多做解释了): inline bool cmp(string a,string b){ return a + b < b + a; } 如 阅读全文
posted @ 2024-06-22 10:50 WBIKPS 阅读(23) 评论(0) 推荐(0)
摘要: 思路 对于每一个 7,我们都可以抽象为这样一个图形: 如果有两个 7,无论它是否有重合部分,红色部分是不需要判断的,只需要看绿色的部分。 因此,我们的问题就简化为了三角形,而不是四边形。 对于所有的 7,都有一个公共顶点:\((0,0)\) 点。 所以,我们可以引出一个叫斜率的概念来判断这些三角形是 阅读全文
posted @ 2024-06-22 10:50 WBIKPS 阅读(18) 评论(0) 推荐(0)