正题
这题考场上没想出来,写了一个动态主席树炸掉了。
正解很简单但不显然,考虑现在要将大于等于x的所有数炸掉,炸弹需要满足的充分必要条件就是:
在>=x的数中倒数第一个的右边必须有一个炸弹
在>=x的数中倒数第二个的右边必须有两个炸弹
以此类推
这里的右边是包括当前位置的。
现在实现还是有点麻烦,考虑将两值比较问题转化为差值问题。
就有:用表示从i到n的>=x的数的个数-炸弹个数
那么判定条件就变成了:是否全为非正整数。
修改查询就不多讲了,都很显然。
代码简单,就不打了,这题的思维很好借鉴:
1.将求值问题转化为判定问题
2.将两值比较问题转化为差值后与0比较问题