摘要: 传送门 解题思路 和这个题几乎一样。 这里是开方,比取模进行次数更少。次数k大约为 \(log_2(log_2n)\)。 AC代码 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algor 阅读全文
posted @ 2021-09-16 18:42 尹昱钦 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 直接用线段树维护取模是不好维护的。 而且我们发现一个数x最多取模logx次(每次大小减半),所以可以暴力取模。 维护的信息除了区间和,还有区间最大值,因为当区间最大值<模数时,此操作是无效的。 AC代码 #include<iostream> #include<cstdio> #in 阅读全文
posted @ 2021-09-16 18:25 尹昱钦 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 其实很板子。 但是我因为一开始写麻烦了又懒得修改所以出现了bug调了一节课。。。 线段树里存区间max,lmax,rmax,sum,意义跟变量名一样。 深刻体会到了pushup里采用取地址符调用的重要性。 AC代码 #include<iostream> #include<cstdi 阅读全文
posted @ 2021-09-16 17:23 尹昱钦 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 逆序对升级版。 考虑每个逆序对对答案的贡献为多少。 假设这个逆序对的坐标为(i,j),则显然有i*(n-j+1)个区间包含这个逆序对,所以对答案的贡献就是i*(n-j+1)。 和以前一样用树状数组求逆序对,需要改动的地方是新加的节点不再是+1,而是+i。 估计ans最大可能在n^4 阅读全文
posted @ 2021-09-16 15:35 尹昱钦 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 首先很显然的一种O(nlogn)做法是st表:st[i][j][0/1/2]分别存从i开始向上走2^j步到达的节点编号/有没有H奶牛/有没有G奶牛。 代码量比较复杂。 还有一种很巧妙的做法是用top[i]表示i号点的奶牛种类从i向上最高可以到达的位置。 很显然假设读入询问的为x,y 阅读全文
posted @ 2021-09-16 14:56 尹昱钦 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 每次删边复杂度太高,所以可以倒序加边。 注意在对方占领后,这个点就不参与连通块数量的计算了。 AC代码 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> 阅读全文
posted @ 2021-09-16 11:10 尹昱钦 阅读(31) 评论(0) 推荐(0) 编辑