10.4

10.4

100+100+0+0=200

T1 最大权值

不难想到,如果选择两个数,那么最高位那个 0 显然是难以保住的。
所以:

  1. 若 \(n\) 为奇数,输出 \(n\)。
  2. 若 \(n\) 为偶数,输出 \(n+1\)。

\(n=1\) 特判。

T2 配对

考虑转化成树上问题,建出 dfs 树,那么有树边和非树边,考虑怎么消掉非树边,对于一个点,考虑将连接这个点的非树边互相抵消到只剩一条,那么对于每一条非树边由于连接祖先和孙子,考虑在孙子处标记为 \(1\),表示在孙子消除掉这条边。

删去剩余非树边需要借助树边,也就是要把整棵树断开成一个个连通块,且每个联通块边数都是偶数,一定有解,于是剩下的随便搞一下即可。

T3 随机打乱

神秘题,以为是逐渐向序列中插入数,结果告诉我是一道区间 dp。

令 \(f_{l,r}\) 表示目前在 \([l,r]\) 区间内的期望。

假设 \([l,r]\) 区间内完全包含 \(m\) 个区间,那么有转移:

\[f_{l,r} = 1+ \frac{1}{m} \sum_i (f_{l,a_i-1} + f_{a_i+1,r}) \]

这就是 \(\mathcal{O(n^3)}\) 做法。

不难发现瓶颈在于计算时的求和。

考虑用前缀和和后缀和优化掉,时间复杂度为 \(\mathcal{O(n^2)}\)。

T4 猜数

交互题。在 \(4\) 次询问内猜出一个数,每次告诉你商或者余数(由他决定),\(n\) 可达 \(10^{18}\)。

潜在的数都可以表示成如下:\(A+Bx\)(\(0 \leq x \leq C\))。
首先观察到两个性质:

  1. 若剩余两个数,那么直接询问大的那个就可以了,需要 \(1\) 次查询。
  2. 若 \(C<B\),那么直接询问 \(B-1\) 即可,也只需要 \(1\) 次。

那么接下来可以开始构造了。

询问 756
│
├─ 返回 /
│   │
│   └─ 询问 4
│       │
│       ├─ 返回 /
│       │   └─ 询问 2
│       │       └─ 剩余 <= 2 个候选
│       │
│       └─ 返回 %
│           └─ 询问 7
│               ├─ 返回 / -> 剩余 <= 2 个候选
│               └─ 返回 % -> D = 28, C <= 27
│
└─ 返回 %
    │
    └─ 询问 1500001
        │
        ├─ 返回 %
        │   └─ C < D
        │
        └─ 返回 /
            └─ 询问 1511
                ├─ 返回 / -> 剩余 <= 2 个候选
                └─ 返回 % -> 剩余 <= 2 个候选

不唯一。

posted @ 2026-10-04 19:27  Harvey-zhuhy  阅读(4)  评论(0)    收藏  举报