题目描述
对于任意一个数列,如果能在有限次进行下列删数操作后将其删为空数列,则称这个数列可以删空。一次删数操作定义如下:
记当前数列长度为kk,则删掉数列中所有等于kk的数。
现有一个长度为nn的数列aa,有mm次修改操作,第ii次修改后你要回答:
经过ii次修改后的数列aa,至少还需要修改几个数才可删空?
每次修改操作为单点修改或数列整体加一或数列整体减一。
输入输出格式
输入格式:
第一行两个正整数n,mn,m,分别表示数列长度、修改次数。
第二行有nn个正整数,表示数列aa,即输入的第ii个数表示数列aa的第ii个数a_iai。
接下来mm行,每行两个整数p,xp,x,表示一次修改操作。
当1\le p \le n1≤p≤n时,该操作为单点修改,将数列中第pp个数a_pap修改为xx
当p=0p=0时,该操作为数列整体加xx。
输出格式:
输出mm行,每行一个整数,第ii行表示前ii次修改后的答案。
思路:
简单想一想:
每个数出现的次数用一个桶表示出来。 形成一个个的柱子,然后向左推倒, 答案就是空位的个数。
注意:只有在区间内的点才可以向左推倒。
单点修改 和 区间修改。
具体看洛谷的题解吧。挺详细的。