交流|各位,我又来整活了!

48
发布于 湖南

用AI出了道新题…

砌墙大师

题目描述

砖厂老板给砌墙大师 n 块砖,按顺序编号 1..n,第 i 块砖的水泥量为 a[i]。

大师要把这 n 块砖按原顺序砌成若干层:每层是连续的一段砖,层与层首尾相接、不重不漏覆盖全部砖。每层的水泥量 = 该层砖的水泥量之和。

设最终层数为 m(墙的实际修筑高度),第 k 块砖所在层号为 h[k](1 ≤ h[k] ≤ m)。

· 老板标准:每层水泥量 ≥ S。老板给的标准可能是虚假的,大师不知道真假,只能看实际砌出的墙。

· 国家标准:层数 m ≥ H,否则直接不合格。

· 房主选了 q 块砖 b[1..q](互不相同),房主标准为 T:被选砖的水泥量必须 ≥ T,否则房屋卖不出去。

· 房主还检查位置高度:被选砖中,离墙顶最远的那块砖,其离顶距离为

y = max over k of (m - h[b[k]])。

· 高度缺口 x = max(0, H - m)(实际墙比国家标准矮多少)。

· 心理预值 P = C / (1 + x)(C 为给定常数;x 越大,印象分越低,P 越小,大师越容易举报)。

· 若 y > P,大师举报老板,老板进监狱。

问:是否存在一种分层方案,使得以下四条同时成立:

1. 每层水泥量 ≥ S;

2. m ≥ H;

3. 对所有 k,a[b[k]] ≥ T;

4. y ≤ P,即 y · (1 + x) ≤ C(整数精确比较,避免浮点)。

若存在,输出 YES;否则输出 NO。

约定:若 q = 0,跳过条件 3、4(没有砖可查),只看条件 1、2。若 q ≥ 1 但条件 3 已失败,直接 NO。

---

输入格式

```

n S H C T q

a[1] a[2] ... a[n]

b[1] b[2] ... b[q]

```

· 第一行六个整数 n, S, H, C, T, q。

· 第二行 n 个整数 a[i]。

· 第三行 q 个整数 b[k](互不相同;q = 0 时该行为空行)。

输出格式

一行,YES 或 NO。

数据范围

· 1 ≤ n, q ≤ 2×10^5(q 可为 0)

· 1 ≤ a[i], S, T ≤ 10^9

· 0 ≤ H ≤ n

· 0 ≤ C ≤ 10^9

· 1 ≤ b[k] ≤ n,互不相同

· 时间限制 2s,空间限制 256MB

---

样例

样例 1

```

输入:

6 5 2 10 3 2

2 4 3 3 1 5

2 5

输出:

YES

```

一种分层:[2,4] | [3,3] | [1,5],m = 3 ≥ 2。砖 2、5 分别在 1、3 层,离顶最远距离 y = max(3-1, 3-3) = 2。x = max(0, 2-3) = 0,P = 10,y·(1+x) = 2 ≤ 10。水泥量 4、5 均 ≥ 3。全部满足。✅

样例 2(水泥量不达标)

```

输入:

5 1 3 0 2 2

1 1 1 1 1

1 5

输出:

NO

```

所有砖水泥量为 1,小于房主标准 T = 2,条件 3 失败。❌

样例 3(层数不足)

```

输入:

4 3 3 10 0 1

2 2 2 2

2

输出:

NO

```

每层和 ≥ 3,最多分 2 层([2,2] | [2,2]),m = 2 < H = 3,条件 2 失败。❌

样例 4(心理预值卡住)

```

输入:

6 1 3 0 0 2

1 1 1 1 1 1

1 6

输出:

NO

```

C = 0,故 P = 0。被选砖 1 必在第 1 层,砖 6 最高也只能在第 m 层,离顶最远距离 y ≥ m - 1。又 m ≥ H = 3,故 y ≥ 2 > 0 = P,条件 4 失败。❌

样例 5(q = 0)

```

输入:

3 2 2 0 0 0

1 1 1

输出:

NO

```

q = 0,只看条件 1、2。每层和 ≥ 2,[1,1,1] 最多 1 层,m = 1 < H = 2,条件 2 失败。❌

样例 6(多砖联合、分式判定)

```

输入:

8 2 4 4 0 3

1 1 1 1 1 1 1 1

2 5 8

输出:

YES

```

一种分层:[1,1] | [1,1] | [1,1] | [1,1],m = 4。砖 2、5、8 分别在 1、3、4 层,y = max(4-1, 4-3, 4-4) = 3。x = max(0, 4-4) = 0,P = 4,y·(1+x) = 3 ≤ 4。水泥量均 ≥ 0。全部满足。✅

---

评论 (0)