// 鼠标点击特效 //

Codeforces Round 1046 (Div.1)

E,F 不会啊,不要太看得起我了。

A

首先,对于每一个 \(i\) 求出以 \(i\) 结尾的子序列中,如果是一个block,则首元素最大可能下标是多少,记为 \(f_i\) 。其实这一个是十分好求的,相当于问 \(i\) 前面第 \(a_i-1\) 个权值为 \(a_i\) 的数下标为多少。考虑将权值相同的数一起处理 \(f_i\) 就可以线性预处理。

然后就可以简单dp一下了。记录 \(g_i\) 表示右端点不超过 \(i\) 的最长子序列长度,则有 \(g_i=\max\{g_{i-1},g_{f_i-1}+a_i\}\)

时间复杂度 \(O(n)\) ,可以通过本题。

B

我们先想一下如果 \(n=1\) 怎么做。假设这个点是 \((x,y)\)

如果我们的机器人当前在 \((x,y)\) 的左下方或者右上方,可以知道他目前在直线 \(y=-x+b\) 上面。

十分类似的,如果我们的机器人当前在 \((x,y)\) 的左上方或者右上方,可以知道他目前在直线 \(y=x+b\) 上面。

联立两个方程就可以解出机器人的初始位置了,并且也是唯一的。

现在有多个节点了,我们依然沿用刚才的思想。先将机器人下标移动到 \((-\infty,-\infty)\) 的位置,则距离函数可以直接被写为 \((x_i-p)+(y_i-q)\) ,其中 \((p,q)\) 为机器人目前的位置,下同。找到 \(x_i+y_i\) 最小的节点就可以建立 \(y=-x+b\) 的方程。

类似的,将机器人移动到 \((+\infty,-\infty)\) 的时候,距离函数可以直接被写为 \((p-x_i)+(y_i-q)\) 。找到 \(y_i-x_i\) 最小的节点就可以建立 \(y=x+b\) 的方程。

然后就可以解出来机器人的初始节点。

注意到本题的值域范围在 \([-10^9,10^9]\) 之间而我们每一次移动可以移动至多 \(10^9\) 步。那么向左,向下分别移动两次 \(10^9\) 就可以到达 \((-\infty,-\infty)\) 。接下来向右移动四次 \(10^9\) 步就可以到达 \((+\infty,-\infty)\) 。一共只需要八次操作。

C

首先题目说的 \(p,q\) 之间所有简单路径权值相同,我们容易想到先拉出来一颗dfs树。

接下来考虑返祖边带来的影响,先假设图中一共只有一条返祖边,其实我们就只关心这个环中两两节点之间的路径权值是否相等。经过手玩,十分容易发现:

  • 如果环的大小是一个偶数,则环上节点权值应该相等。

  • 如果环的大小是一个奇数,则环上节点权值不仅应该相等,还都得是 \(0\)

如果有多条返祖边怎么办呢?其实也就是同时对于每一条返祖边与树边构成的环满足条件就行了。容易使用并查集维护节点权值的相等情况。计算答案是简单的。

时间复杂度 \(O(n \log n)\)

D1

这部分没有对 \(n\) 的和进行限制。

我们考虑一个事情,第一次询问,\(\max\{a_i\}\) 不能大不然返回 \(0\) 就不好了。干脆先让第一次询问输出 \(n\)\(1\) 吧! 然后我们知道,\(W\) 的大小在一个范围 \([L,R]\) 之间。

这个区间很有说法,一定满足 \(2L>R\) 。如果满足 \(2L \leq R\) 的话 \(\lceil \dfrac{n}{L}\rceil\) 是一定严格小于 \(\lceil \dfrac{n}{R}\rceil\) 的。我们就十分容易想到一个判断 \(W\) 大小的方式:

  • 生成一个长度为 \(2(R-L)\) 的序列形如 \(L,1,L,2,L,3,\dots,L,R-L\)

这是什么原理呢?因为 \(2L>R\) ,所以一定不可能出现三个元素同时在一行的情况。并且 \(W\) 一定会出现恰好 \(W-L\) 次两个元素在同一行,其余元素单独一行。

因为 \(2L>R\) ,则 \(2(R-L)\) 也是不超过 \(10^5\) 的,可以通过。

D2

我们借鉴D1的思路。接下来的数据是我赛时尝试后得到的,主要是思路这一块。

我们还是知道,第一次询问 \(\max\{a_i\}\) 不可以大。但是输出 \(n\)\(1\) 未免有点太浪费了。

我们考虑输出 \(10^4\)\(121\) ,然后分为两个部分。一个是 \(W\leq 120\)\(W>120\)

首先 \(W>120\) 的部分可以直接套取 \(D1\) 的做法,打表得到 \(2(R-L)\) 不超过 \(1.5\times 10^4\)

\(W \leq 120\) 的部分直接输出 \(N=1.5\times 10^4\)\(1\) 。打表发现 \(\lceil \dfrac{N}{W} \rceil\) 没有相同的。

那么就在不超过 \(2.5\times 10^4\) 的情况下完成了构造。

posted @ 2025-08-29 01:48  dan-da-dan  阅读(30)  评论(0)    收藏  举报