为什么前只有70分求解答

P1610 鸿山洞的灯

``` 4 4 1 2 5 6 ``` 对于这组数据,答案为 `1`,而你的输出为 `2` 因为关掉中间任意一盏灯后,对于中间另一盏灯,两边的灯的距离都是 $6-1=5>4$,所以关不了两盏灯 (这能有 $70pts$真离谱)
by Wu_Ren @ 2020-11-04 19:22:34


``` #include <iostream> #include <algorithm> #include <cstring> using namespace std; int n = 0; int dist = 0; int xq[100001]; int main() { cin >> n >> dist; for (int i = 0; i < n; i++) { cin >> xq[i]; } sort(xq, xq + n); int ans = 0; int j = 0; int z = xq[0] + dist; for (int i = 1; i < n - 1; i++) { if (xq[i] > z) { z = xq[i] + dist; } else { ans++; } } cout << ans << endl; return 0; } ``` @[Wu_Ren](/user/76039) 加上等号也是70 求大佬教
by xwzxwz321 @ 2020-11-05 21:51:25


@[xwzxwz321](/user/308657) 第一,不是大佬是即将退役的菜鸡 第二,`if (xq[i] > z)` 改为 `xq[i+1]>z`,毕竟是要相邻的两盏灯距离 $\le dist$ 才关第 $i$ 盏,与 $xq_i$ 无关
by Wu_Ren @ 2020-11-06 07:29:52


|