思路讲解
用的tarjan方法求的LCA(倍增我不太会)
参考讲解(树上差分)

AC代码
AC
https://www.luogu.com.cn/record/199856000
1 |
|
心路历程(WA,TLE,MLE……)
这道题数据范围好像是有点问题,需要开到5e5+10才行,反正有点离谱,也不知道是我0数错了还是什么,反正有点离谱
用的tarjan方法求的LCA(倍增我不太会)
参考讲解(树上差分)

AC
https://www.luogu.com.cn/record/199856000
1 | #include <bits/stdc++.h> |
这道题数据范围好像是有点问题,需要开到5e5+10才行,反正有点离谱,也不知道是我0数错了还是什么,反正有点离谱
赛时最后30min过了,通过网上搜到的结论,
gcd(a,b)=a xor b=a−b(结论,下面是推理过程)
a−b<=a xor b=gcd(a,b)
gcd(a,b)∗x=a, gcd(a,b)∗y=b可得a−b=(x−y)∗gcd(a,b)可得a−b<=gcd(a,b)又因为a−b>=gcd(a,b)gcd(a,b)=a−b
当然不可能每题都用结论嘛,所以看看枚举可不可以过
搞半天发现和我的赛时代码也差不多,jiangly差不多也是我这个做法
最重要的其实就是更换枚举尺度,枚举a太慢了,可以枚举g,进而枚举a时只用枚举g的倍数就行了
AC
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=74967799
1 | #include <bits/stdc++.h> |
赛时AC记录
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=74946535
1 | #include <bits/stdc++.h> |
https://ac.nowcoder.com/discuss/1452662
主要就是他的思路,赛时实际上就AC了,只不过赛后数据加强了,前面AI乱写的过不去了。
这个思路就是贪心,先把最小的吃掉,再吃次小的,再吃次次小的。。。。以此类推
AC
https://ac.nowcoder.com/acm/contest/95323/M
1 | #include <bits/stdc++.h> |
参考题解:
https://ac.nowcoder.com/discuss/1452661
https://ac.nowcoder.com/discuss/1452662(这个题解好)
中位数定理,其实类似于树的重心(以该点为根,最大子树最小),都是不能牺牲大我
只有一个点左边也有n个点,右边也有n个点,到达该点距离之和最短
其实数轴就是一种特殊的树嘛~~
AC https://ac.nowcoder.com/acm/contest/view-submission?submissionId=74961575
1 | #include <bits/stdc++.h> |
前面一直有点问题,结果是因为这个特判mid1-=1和mid2+=1都要算
1 | if(mid1==mid2) { |
FHQ-Treap
https://www.luogu.com.cn/article/vj041eul
AC
https://www.luogu.com.cn/record/200519720
1 | #include <bits/stdc++.h> |
各种奇怪的地方吧,导致WA了。