大概看了两三个小时的题解,思考量很大,实现简单........
20分:
明显看出,每个点的贡献是x*(x-1)/2;即组合数C(x,2),从x个线段中选出2个的方案数,显然每次相交贡献为1,n^2枚举相交即可....
40分:
对于四十分,观察图像发现是实际就是求逆序对.....
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include
40分 部分分:
考虑a==x[1]
我们发现图像的一些性质
在x[i]的不断后移中,假设当x[j]时>MOD,
我们发现x[i]-x[j]是一段以a为公差的序列
为了避免枚举n,我们从a入手
因为公差的原因,将序列分成若干个长度为a的段,其实每次经过的点都是一定的
当x<a时
我们直接求解 此时的ans=(i-1)-ask(now)now为当前值,非常明显,因为i-1是所有在它之前出现的数,ask(now)为不符合的....
之后
发现一个小性质,每次后移减少的值是一定的,即ask(a)
然后递推....
100 分:
在上述部分加入x[1]>a的情况
因为每次减的都是ask(a),但这是第一段在1-a中不存在,我们若是按上述方法求,在枚举中不会将
第一段不符合的值减去,那么......我们发现当枚举第二段时(一段就是长度大于mod后重新开始)
当此时长度now大于初始值时,需要减去1,因为这个1无法在ask(1)中得出啦啦啦....
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include
View Code