摘要:
Code: 阅读全文
摘要:
我们只需将序列分成 n\sqrt{n}n 块,对于每一个点维护一个 val[i]val[i]val[i],to[i]to[i]to[i],分别代表该点跳到下一个块所需要的代价以及会跳到的节点编号。在查询时,我们最多会跳 n\sqrt{n}n 块,修改的时候将节点所在区间暴力修改即可。 Code: 阅读全文
摘要:
Code:#include#include #include#includeusing namespace std;typedef long long ll;const int maxn=1000000+233;const int... 阅读全文
摘要:
Code: 阅读全文
摘要:
Code: 阅读全文
摘要:
分块真的是很暴力呀… 暴力查询左端,暴力查询又端点,中间整体部分直接 $O(1)$ 求出。 注意编程细节:belong[i]=(i−1)/block+1,这样可以保证序列被分成这样的: Code: 阅读全文
摘要:
Code: 阅读全文
摘要:
Code: 阅读全文
摘要:
Code:#include#includeusing namespace std;const int maxn = 1000000 + 3;long long arr[maxn], ans[maxn], sumv[maxn];int main(){ int... 阅读全文