第一题 给定一个一维数组表示不同地方的高度,然后在一个地方倒水。倒水会使得相邻的低于此地高度的地方积水。问最多多少个地方积水。 第二题 有一个长度为n的棋子队列,初始情况为全正面。对其做q次操作,每次操作会将[a,b]区域内的棋子翻转。问每次操作过后的正面棋子个数。 解法 一开始想维持一个线段队列,然后记录每个队列的正反情况。但是发现在插入新的线段时,要考虑的情况太多了:新线段包含已有线段,新线段和其中一个相交等等。所以新的想法就是每次就将线段的两端记录下来,每次遇到一端就翻转。统计正反的棋子个数。 n, q = [int(x) for x in input().split()] lines ...