#C1017. [CSP-S 2020T4] 贪吃蛇

    ID: 4491 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 4 上传者: 标签>CSP-S提高级2020年模拟数据结构队列贪吃蛇结构体顺序结构

[CSP-S 2020T4] 贪吃蛇

[CSP-S 2020] 贪吃蛇

题目描述

草原上有 nn 条蛇,编号为 1,2,,n1,2,\ldots,n。初始时每条蛇有一个体力值 aia_i。称编号为 xx 的蛇比编号为 yy 的蛇强,当且仅当 ax>aya_x>a_y,或 ax=aya_x=a_yx>yx>y

这些蛇会进行若干轮决斗。每一轮,实力最强的蛇可以选择是否吃掉实力最弱的蛇:

  1. 若选择吃,最强蛇的体力值减去最弱蛇的体力值,最弱蛇退出决斗,然后进入下一轮。
  2. 若选择不吃,决斗立即结束。

每条蛇都希望在自己不被吃掉的前提下尽可能多地吃到别的蛇。假设每条蛇都足够聪明,请求出决斗结束后会剩下几条蛇。

本题有多组数据。第一组数据给出所有蛇的体力值;之后每组数据相对于上一组数据修改一部分蛇的体力值。

输入格式

第一行一个正整数 TT,表示数据组数。

对于第一组数据:第一行一个正整数 nn,第二行 nn 个非负整数表示 aia_i

对于第 22 组到第 TT 组数据:第一行第一个非负整数 kk 表示体力被修改的蛇的个数;第二行 2k2k 个整数,每两个整数组成一个二元组 (x,y)(x,y),表示依次将 axa_x 改为 yy。同一位置可能被修改多次,以最后一次修改为准。

输出格式

输出 TT 行,每行一个整数表示最终存活的蛇的条数。

样例 #1

输入 #1

2
3
11 14 14
3
1 5 2 6 3 25

输出 #1

3
1

样例 #2

输入 #2

2
5
13 31 33 39 42
5
1 7 2 10 3 24 4 48 5 50

输出 #2

5
3

数据范围与提示

样例 #1 中,第一组数据第 11 轮若 33 号蛇选择吃掉 11 号蛇,它会在下一轮被 22 号蛇吃掉,所以它选择不吃,最终剩下 33 条蛇。第二组数据中,体力变为 5,6,255,6,2533 号蛇可以连续吃掉其它蛇而不被吃,最终只剩 11 条蛇。

数据范围与提示

  • 对于 20%20\% 的数据,n=3n=3
  • 对于 40%40\% 的数据,n10n \le 10
  • 对于 55%55\% 的数据,n2000n \le 2000
  • 对于 70%70\% 的数据,n5×104n \le 5\times 10^4
  • 对于 100%100\% 的数据,3n1063 \le n \le 10^61T101 \le T \le 100k1050 \le k \le 10^50ai,y1090 \le a_i,y \le 10^9。保证每组数据(包括所有修改完成后)的 aia_i 按不降顺序排列。

附件下载

snakes.zip