随笔分类 - 算法——分治
摘要:题目链接:https://www.acwing.com/problem/content/description/257/ 基于值域的整体分治策略是给定mid,将值小于mid的数的下标放入lq,另外的放入rq,将询问也进行分割,变成两个独立的子问题,对子问题进行求解即可。注意树状数组每次结束一次sol
阅读全文
摘要:题目链接:http://poj.org/problem?id=3889 根据对称性以及规律可以分四种情况进行归纳。旋转的情况可以这样考虑, ①、对于位置为(x,y)的点,边长为k的正方形中,顺时针旋转九十度之后的坐标是(y,k-1-x), ②、对于位置(x,y)上的点,边长为k的正方形中,逆时针旋转
阅读全文
摘要:题目链接:http://poj.org/problem?id=1958 求A的B次方的所有约数之和对9901的模。使用分治算法计算等比数列的前缀和,时间复杂度为O(logC) 代码如下: #include<iostream> #include<vector> using namespace std;
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911 题目给出一个序列和一个操作数k,操作集合是交换任意两个相邻的数,问操作k次之后序列的最小逆序对数量。一个没有升序排列的数列一定存在两个相邻的数是逆序对,只要对这两个数进行交换就可以使逆序对的数量减
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P1010 题目给出一个2e4以内的数,要求把这个数分解成仅含2的幂次方的形式,下图是样例: 由于一个数可以分成多个2的幂次方,可以将其划分为多个子问题,再对每个子问题递归求解,这就是分治算法的精髓。在本题中,分治的最小子问
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P1908 这个题不要以为拿到手就可以树状数组秒,本题的数据范围是1e9显然简单的树状数组是空间不够的,点个数有5e5,所以离散化之后用树状数组还是可以的,但是有没有更简明的方法呢?这就说到一种高效的排序方式mergesor
阅读全文