2018.05.05题解

第一题:周
由于n只有15,所以我们可以枚举状态(即每次做出哪种选择),刷个最大的。

第二题:任
这题还算比较简单,由于两点之间只有一条通路(两点属于同一个连通块),那么就是一棵树。
对于一棵树,节点个数 = 边数+1。
所以我们可以求出连通块里的总点数和总边数,作差就是答案。

也可以理解为模拟并查集操作过程,发现一条边,那么合并两个连通块,连通块总数-1。

第三题:飞
这题,如果数学足够强,可以直接推出来,但是考场里并不一定可以做到。
首先,我们发现这个答案其实就是逆序对。
xi的值是有规律的,先不断上升,突然降下来,再不断上升……
因此我们可以借此优化。

对于一个 xi,如果 x[i-1]+a < mod,那么 xi 和前面能组成的逆序对就是 x[i-1] 和前面组成的逆序对 las 减去之前的组数 total。
这是因为,每一组的任意两个都间隔 a ,那么x[i-1] 到 x[i] ,每组都应该存在一个元素在它们之间(所有xi皆不相等)。
OK?事实上还有一种特别情况。
因为对于 x1 为首的那一段,当前 xi < x1 且 xi不是某段的首 时,x1为首的那一组没有处于x[i-1]到x[i]之间的元素(特判就好了)。

如果xi是某段首呢?因为a比较小,我们可以利用树状数组直接算出当前前缀和数。

猜你喜欢

转载自blog.csdn.net/xu0_zy/article/details/80287103