2018.05.05题解

10 篇文章 0 订阅
10 篇文章 0 订阅

第一题:周
由于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比较小,我们可以利用树状数组直接算出当前前缀和数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值