liu-shi-san-d

六十三(D)

link

考虑 \(d=1\) 的情形:假设第一次询问了 \(x\),第二次询问了 \(y<x\)

此时我们得到第一次询问的结果,如果 \(a\)\(x\) 大,则我们用 \(2\) 的代价使范围缩减到 \(n-x\);如果 \(a\)\(x\) 小,则我们用 \(1\) 的代价使范围缩减到 \(x-1\),且有一个待反馈结果的询问,这个状态就类似我们执行第一次询问后的状态。

利用这种策略递归求解,设 \(f_i\) 表示 \(i\) 次询问能解决的最大 \(n\),则如果令 \(x=f_{i-1}+1,y=f_{i-2}+1\),则有 \(f_{i}=f_{i-1}+f_{i-2}+1\)

类似地,对于 \(d>1\)\(f_i=f_{i-1}+f_{i-d-1}+1\)

具体地,第一次我们查询 \(f_{i-1}+1\),第二次我们查询 \(f_{i-2}+1\)\(\cdots\),第 \(d+1\) 次我们查询 \(f_{i-d-1}+1\)

此时得到第 \(1\) 次查询的结果,如果 \(a>f_{i-1}+1\),则用 \(d+1\) 次的代价将问题缩减到 \(f_{i-d-1}\)

如果 \(a<f_{i-1}+1\),则问题类似于进行 \(d\) 次询问之后的状态,规模缩减到 \(f_{i-1}\),继续向左询问即可。

这样的询问次数在题目要求范围内。

posted @ 2024-02-29 07:55  iorit  阅读(14)  评论(0)    收藏  举报