23
BZOJ1962 3

猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

  • Upload
    others

  • View
    34

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

BZOJ19623

Page 2: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

什么是猜数问题?

预先存在一个数

限制条件:

1. 猜错(小)次数有限

2. 得到反馈存在延迟

3. …

4

Page 3: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

模型王子

TL 家有无数个高达机器人的模型,这已经不是一个秘密。终于有一天,你忍不住了,问 TL:你家到底有多少个模型呢?

TL:就是不告诉你。 You:说吧说吧,别保密了咯,我不会让老师知道的。TL:这样吧,我让你猜,你每次猜一个数,我会告诉你比这个数大还是小。

你快点猜出来,我马上就要去奶奶家吃饭去了。你以你的打字速度每 1s 可以提一个问题,但是由于该遭天杀的网络延迟。

TL 的回答要在 1s 之后才会传到你这里来。也就是说,只有当你提出了下一个问题之后,这个问题的答案才会告诉你。

同时,由于 TL 心高气傲。如果你低估他拥有的模型数量,他就会生气。如果你低估了他 K(1<=K<=100)次,他就不再陪你玩了。你最开始已经知道,TL 的模型数量至少有 1 个,至多不超过 N(1<=N<=105)个。下面是一个 N=6 时的可能的询问过程:

BZOJ1962 5

Page 4: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

BZOJ1962 6

Page 5: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

简单的模型

被猜数 X 是 1 到 N 范围内的整数,每次你可以询问一个整数 Y 和 X 的大小关 系。给出 N,请问在最坏情况下至少需要几次才能保证猜出 X。

二分

不是简单的

7

Page 6: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

建立模型

f(i):表示询问i次可以处理长度为i的区间

f(i) = f(i – 1) + f(i – 1) + 1 = 2f(i – 1) + 1

8

Page 7: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

复杂度?

目测是O(Ans).

观察f(i)的增长速度快于指数函数,故:

O(Ans) = O(log2N)

抽象化,便于分析

9

Page 8: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

限制一

基本设定不变,如果你得到了K次以上X > Y的回答,那么你就失败了,当然你是不会允许失败的。

二分GG T_T

f(i,j)表示询问了i次得到了j次X > Y的回答游戏就会结束的情况下能处理的区间长度

10

Page 9: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

11

Page 10: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

f(i,j) = f(i – 1,j) + f(i – 1,j – 1) + 1

f(0,j) = 0, f(i,0) = 0

复杂度? O(Ans)?

跟组合数递推公式对比,易知f的增长速度是非常快的

12

Page 11: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

限制二

基本假设不变,现在你每问出一个问题之后,不会

马上得到结果。再你猜下一个数之后会告诉你第一个的结果。

两个区间的等价性

f(i)意义不变

13

Page 12: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

14

Page 13: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

f(i) = f(i – 1) + f(i – 2) + 1

易知f(i)的增长速度比Fibonaci

数列更快,所以复杂度是很优的。

15

Page 14: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

限制一+限制二

背景就是三个背景叠加

f(i,j)表示意义同限制一

区间已经不等价了!

16

Page 15: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

第二次询问落在小于Y的区间

17

Page 16: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

第二次询问落在大于Y的区间

18

Page 17: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

f(i,j) = max{f(i – 1,j) + f(i – 2,j –2),f(i – 2,j) + f(i – 1,j – 1)} + 1

复杂度?

(随便感受一下就知道很快

19

Page 18: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

简单变形

某游戏厅有一个硬币游戏机,游戏的基础就是最普通的猜数游戏。你猜一个数 Y,然后机器告诉你猜对了或者比目标数 X 大还是小。如果你猜对了,游戏直接结束,如果你猜的数比 X 大,你就需要投入a 枚硬币让游戏继续,如果你猜的数比X 小,你就需要投入 b 枚硬币让游戏继续。已知X 是 1 - N 里面的数。N 已知, 请问需要多少枚硬币才能保证猜出 X?

f(i) = f(i – a) + f(i – b) + 1

20

Page 19: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

更大的挑战

被猜数X 是1到N 范围内的整数,每次你可以询问一个整数 Y 和 X 的大小关系。不同于普通猜数问题,本次提问的回答你不会马上得到,也不是在你下一次提出问题后,而是在你再提问C 次之后才告诉你。也就是你每问一个问题之后, 得到的回答是之前第C次提问的答案。给出 N、C,请问在最坏情况下至少需要几次才能保证猜出 X?

套用以前的分析方法?

sgu 21

Page 20: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

不可行

这C次盲目猜测有2^c种情况,那种式子需要取这所有情况的最大值,GG

打个表冷静一下

发现了些什么…… 决策都在极端情况

不妨全猜更大的数

f(i) = f(i – 1) + f(i – c – 1) + 1

就这么AC了

Sgu22

Page 21: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

怎么证明呢?

非常遗憾,我也不会…

有兴趣的同学可以课下研究

23

Page 22: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

Q & A

24

Page 23: 猜数问题小探 - acm.sjtu.edu.cnŒœ数问题小探_白毅伟_自选主题演讲.pdf · 被猜数x 是1到n 范围内的整数,每次你可以询问一个 整数y 和x 的大小关系。不同于普通猜数问题,本次

Thank you!

25