首先将数组做环形差分,记差分数组为,可以发现,只要全0,相当于就可以对全局做一个确定次数的操作,把也变成全相等的数组。 于是考虑能不能把变成全0。我们可以发现,对于点,可以传递到。于是我们可以利用并查集,把所有向合并,维护成几个联通块,每个联通块内的可以相互传递。 也就是说,对于所有联通块,块内所有的和为0,才能让全局的都为0。时间复杂度 。 // #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> #define int long long void solve() { int n;...