摘要:
题目链接:https://codeforces.com/problemset/problem/1444/C 第一想法就是暴力枚举所有两个点的子图然后判断二分图 正难则反,考虑补集转化,即不合法的方案数,有两种情况: 存在单色环 存在双色环 所以只需要统计出不含环的单一颜色的数量 \(cnt\) 和不 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/submission/code_detail/2916478/ 普通旋转 \(treap\) 的重要操作就是 \(zig zag\) 以及用堆的性质维持树的平衡 旋转 \(treap\) #include<cst 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/description/254/ 每次找到树的重心,分治下去统计答案(经过当前根节点的路径)即可 统计答案使用了指针扫描数组的方法,要注意去掉同一子树内路径的答案 还可以直接在树上统计子树答案(这个方法的好处是保 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/description/253/ 莫队算法:对询问分块 先将询问按左端点递增排序,然后将询问分成 \(\sqrt{n}\) 块,块内再将询问按右端点递增排序 块内相邻左端点变化不会超过 \(\sqrt{n}\) 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/submission/251/ 区间众数 预处理出块$[L,R]$内的每个数出现次数 #include<cstdio> #include<cstring> #include<algorithm> #include 阅读全文
摘要:
https://www.acwing.com/problem/content/244/ 分块入门练习题 大块维护,小块朴素 #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cmath 阅读全文
摘要:
https://www.acwing.com/problem/content/description/250/ 考虑以矩形的右上角代表这个矩形, 对于每个星星,考虑能圈住这个星星的矩形的右上角的范围,又因为矩形边界上的星星不算, 所以我们可以假设将星星的横纵坐标都减去$0.5$,这样矩形的范围就是左 阅读全文
摘要:
https://www.acwing.com/problem/content/description/249/ 线段树经典题 首先因为坐标可能是小数,所以要先把坐标离散化 将每个矩形拆成左右两条线段,将每条线段按横坐标排序 线段树每个节点维护两个信息:\(cnt\) 和 \(len\) 其中 \(c 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/description/247/ 更相减损术:\(gcd(a,b) = gcd(a,a - b)\) 可以扩展到 \(n\) 个数,\(gcd(a,b,c) = gcd(a,b-a,c-b)\) 于是可以用线段树 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/description/246/ 经典题,动态维护最大字段和 线段树节点内除了 \(sum\) 外,还要维护左起最大子段和,右起最大子段和,最大子段和 #include<cstdio> #include<cstr 阅读全文