codeforces
文章平均质量分 65
wang_wins
这个作者很懒,什么都没留下…
展开
-
Codeforces Round 911 (Div. 2) D题
为了避免ans[2x]、ans[3x]对于x的重复减去,所以我们计算贡献消除的时候,从大到小枚举当前处理的gcd,对其进行贡献个数消除,最后的ans[x]表示的就是x = gcd做出的贡献个数。那么gcd(a,b)的贡献就是gcd(a,b)*(数组中>=max(a,b)且不等于a、b的数字的个数)。设num[x] = 已经枚举出的x的倍数的个数,vis[x] = 数组中y的个数,dz[y] = 数组中>=y的个数。定义gcd(a,b,c)为(a,b,c)中最小的两个数的gcd。原创 2023-11-27 17:30:51 · 461 阅读 · 0 评论 -
CodeTON Round 7 (Div. 1 + Div. 2, Rated, Prizes!) E题
处理方法:询问vi时,将vi+n,就变成了vi>=i问题,需要查询区间(i,vi+n),那么我们也需要对[n+1,2*n]区间进行维护,维护影响跳过次数的点。进行维护时,考虑影响跳过次数的点,可以发现点是满足该点目标节点在该点右侧,即某一点,i属于[n+1,2*n],v[i]+n >= i。对于i到vi的路径上,假如某个点可以跳过,那么这个点一定初始位置j>i,否则该点一直在i点左侧,无法被i点跳过;最后该点的vj也需要>=j,否则该点无法在i跳到vi之前,跳到vj,对于vi做出贡献。原创 2023-11-26 20:21:46 · 408 阅读 · 0 评论