摘要:
题目链接:https://www.acwing.com/problem/content/description/123/ 最朴素的做法是,暴力枚举每个正方形,维护前缀和判断是否符合条件,但是坐标范围太大 注意到只有 500 个点,所以可以将坐标离散化一下 正方形的边长显然满足二分性,所以二分边长即可 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/description/122/ 给定 \(n\) 个等差数列,每个数字的位置上存在一个盾牌,保证最多有一个位置的盾牌数量是奇数,找到这个位置 对于一个等差数列,设其首项为 \(A\), 公差为$D$, 则该数列 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/121/ 经典问题,平面最近点对,使用分治来解决 把所有点按横坐标排序,分治求解距离 合并时将两边的最近点对距离也比较一下 属于不同集合的点比较距离时判断一下即可 #include<cstdio> #includ 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/111/ 倍增 + 二进制划分思想, 选定区间左端点$L$, 不断向右扩展$2$的幂次长度,检验区间的合法性即可 复杂度怎么证明? \(O(Nlog^{2}N)\) #include<cstdio> #inclu 阅读全文
摘要:
https://www.acwing.com/problem/content/109/ 归并排序求逆序对模板题 每次合并的时候,对答案的贡献即为在当前左边区间元素被排序之前先被排序的右边区间元素的数量 #include<cstdio> #include<cstring> #include<algor 阅读全文
摘要:
https://www.acwing.com/problem/content/108/ 维护一个大根堆,一个小根堆,设当前序列长度为$M$ 当前序列从小到大排名$1M/2$的整数存在大根堆 排名$M/2+1M$的整数存在小根堆, 如果插入后某一堆元素过多,就把该堆堆顶取出来插入令一个堆, 这样序列的 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/107/ 我们发现: 交换左右相邻的摊点,只会改变某两列的数量,同理,交换上下相邻的摊点有改变某两行的数量 于是我们就可以将行和列分开考虑 而对于行和列:就是经典的均分纸牌问题,不过这里是环形均分纸牌 必然有一种 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/105/ 首先对所有涉及到的语言离散化一下,统计会每种语言的人的个数 然后扫一遍电影,找到知道电影语言最多的人的那个电影 #include<cstdio> #include<algorithm> #include 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/104/ 先考虑一个经典问题,求最大连续子段和,无长度限制: 扫描序列,不断将新的数加入子段,当子段和为负数时,清空当前子段 若有长度限制: 维护前缀和$sum$,减去$i-L$之前的前缀和的最小值 对于这道题, 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/103/ 假设初始身高都是$H$,每次给出关系,就将$[l+1,r-1]$间的牛的高度减一 运用差分将区间操作转化为单点操作即可 同时,关系可能有重复,\(map\) 判下重即可 #include<cstdio> 阅读全文