B
题目大意:定义排列的代价为:将其变为递增序列时,需要排序的最短连续子段长度。给定一个由 $0$ 到 $n$ 的整数构成的数组 $p$,其中没有任何正整数(大于零)出现超过一次。需要用整数替换所有的 $0$,使得数组 $p$ 变成一个排列。需要计算,所能构造的排列的最大可能代价。
数据范围:$1 \le t \le 10^4$,$1 \le n \le 2 \cdot 10^5$,$0 \le p_i \le n$,$\sum n \le 2 \cdot 10^5$。
思路:
| |
C
题目大意:给定两个长度为 $n$ 的整数数组 $a$ 和 $b$。你可以选择任意一组下标的子集,并将这些位置上的元素进行交换(即对于每个下标 $i$,执行 swap($a_i$, $b_i$))。如果在交换之后,两个数组都按非递减顺序排列,则该下标子集被认为是“好的子集”。需要计算“好子集”的数量。
数据范围:$1 \leq t \leq 500$,$1 \leq n \leq 100$,$1 \leq a_i \leq 1000$,$1 \leq b_i \leq 1000$。
思路:
| |
D
题目大意:假设你是一家商店的老板。为了新一季到来之前清理库存,你决定举行一次全面大促销。你的店里有 $n$ 种不同的商品,第 $i$ 种商品的售价为 $c_i$ 个金币。每种商品都贴有价格标签,标签上的价格就是 $c_i$。你决定举办一次这样的促销:“我们将所有商品的价格除以 $x$。” 形式上,这意味着你选择一个公约数 $x$,促销期间,第 $i$ 件商品的新价格将变为 $\left\lceil \frac{c_i}{x} \right\rceil$ 个金币(这里 $\left\lceil y \right\rceil$ 表示向上取整)。为了避免顾客混淆,需要为所有商品重新贴上印有新价格的标签,但打印新标签是有成本的。
数据范围:$1 \le t \le 10$,$1 \le n \le 2 \cdot 10^5$,$1 \le y \le 10^9$,$1 \le c_i \le 2 \cdot 10^5$。
思路:
| |
E1
题目大意:这是该问题的简单版本。简单版与困难版的唯一区别在于 $t$ 和 $n$ 的约束条件。现有一排 $m$ 个塔,第 $i$ 个塔的高度为 $h_i$。如果你从左侧观察这排塔,你能看到所有严格高于前面所有塔的塔。同理,如果你从右侧观察这排塔,你能看到所有严格高于其右侧所有塔的塔。设 $L(h)$ 为从左侧能看到的塔的高度集合,$R(h)$ 为从右侧能看到的塔的高度集合,当这排塔的高度序列为 $h$ 时。对于上述例子,$L(h) = \{3, 5, 7\}$,$R(h) = \{4, 7\}$。现给定一个序列 $a_1, a_2, \dots, a_n$。
数据范围:$1 \leq t \leq 100$,$1 \leq n \leq 5000$,$1 \leq a_i \leq 10^9$,$\sum n \le 5000$。
思路:
| |
