#abc466c. 计数近距离对(Count Close Pairs)

计数近距离对(Count Close Pairs)

计数近距离对(Count Close Pairs)

题目描述

这是一道交互题。

数轴上有 NN 个点,编号为 11NN,从左到右排列。点 ii 的坐标为 PiP_i(实数),满足 P1<P2<<PNP_1 < P_2 < \ldots < P_N

最初你只知道 NN。你可以向评判程序提问最多 2N2N 次:

选择 i,ji, j1i<jN1 \leq i < j \leq N),询问点 ii 和点 jj 的距离是否不超过 11。评判程序回答 YesNo

请输出距离不超过 11 的点对 (i,j)(i, j)i<ji < j)的数量。

交互格式

  • 提问格式:? i j1i<jN1 \leq i < j \leq N),评判程序回答 YesNo
  • 答案格式:! X,其中 XX 为距离不超过 11 的点对数量

注意事项

  • 每次输出后需刷新标准输出(如 cout << flushfflush(stdout)
  • 交互中输出无效或程序中途终止则结果不定
  • 输出答案后立即终止程序

交互示例

N=3N = 3,坐标为 0,0.7,1.50, 0.7, 1.5

你的输出 评判程序输出 说明
? 1 2 Yes 00.7=0.71|0 - 0.7| = 0.7 \leq 1
? 1 3 No 01.5=1.5>1|0 - 1.5| = 1.5 > 1
? 2 3 Yes 0.71.5=0.81|0.7 - 1.5| = 0.8 \leq 1
! 2 距离 1\leq 1 的点对有 (1,2)(1,2)(2,3)(2,3),共 22

数据范围

  • 2N1032 \leq N \leq 10^3
  • NN 为整数
  • 坐标 PiP_i 为实数,满足 P1<P2<<PNP_1 < P_2 < \ldots < P_N

知识点与难度

本题涉及的知识点从属于 GESP 三级,难度等级:⭐⭐


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例
1 20 3~8 小规模 N≤10 / 特殊: 全距离≤1 / 特殊: 全距离>1
2 15 9~11 Hack: N=2 / Hack: 相邻恰好=1 / Hack: 交替远近
3 30 12~20 中规模 N≤500 / 大规模 N=1000
4 25 21~25 随机 N≤1000 回归