摘要:
题意及思路 " 题目 " 主要是讲先给出所有guard的位置,再给出所有incidents的位置,求出guard到达每个incident处最小的steps,其中guard每次可以向四周8个方向移动。 思路:对于每个guard使用bfs遍历它周围的点,算出相应的点到它的距离。 AC代码 c inclu 阅读全文
摘要:
快速幂 如计算 a^b^ ,代码如下: 快速幂代码 快速幂取模: 快速幂: 矩阵快速幂 它可以快速求出斐波那契数列,这里以一个题为例, "Fibonacci POJ 3070" AC代码如下: 参考博客:https://blog.csdn.net/alps1992/article/details/4 阅读全文
摘要:
概述 对于求形如 $\sum_{i=1}^{n}\lfloor\frac{n}{i}\rfloor$ 的值,就需要用到整除分块,否则当n很大时就会超时。在普通的一个一个的计算时可以发现很多$\lfloor\frac{n}{i}\rfloor$的值成块状分布, 最终的到的规律是发现对于每一个值相同的块 阅读全文
摘要:
问题分析 首先枚举a和b, 把所有a+b记录下来放在一个有序数组,然后枚举c和d, 在有序数组中查一查 c d共有多少个。注意这里不可以直接用二分算法的那个模板,因为那个模板只能查找是否有某个数,一旦找到便退出。利用 "lower_bound,upper_bound" 比较方便,这两个函数就是用二分 阅读全文
摘要:
题目思路 将兔子的血量从大到小排列,将箭的属性写在类中(结构体也成),排序按照伤害从大到小排列,若有相等的则按价格从小到大排。 代码 c include using namespace std; int N, M; const int maxn = 100000+10; int b[maxn], d 阅读全文
摘要:
介绍 Eratosthenes筛法,又名埃氏筛法,对于求1~n区间内的素数,时间复杂度为n log n,对于10^6^ 以内的数比较合适,再超出此范围的就不建议用该方法了。 筛法的思想特别简单: 对于不超过n的每个非负整数p, 删除2p, 3p, 4p,…, 当处理完所有数之后, 还没有被删除的就是 阅读全文
摘要:
扩展欧几里得模板 扩展欧几里德算法——找出一对整数(x,y), 使得ax+by = gcd(a,b)。 注意, 这里的x和y不一定是正数, 也可能是负数或者0。 例如, gcd(6,15)=3, , 其中x=3, y= 1。 这个方程还有其他解, 如x= 2, y=1。 用数学归纳法并不难证明该算法 阅读全文
摘要:
归并排序 要想了解归并思想,就离不开对归并排序的理解,从前看别人的代码百思不得其解,后来看到一张图片顿时领悟,附下: 每次比较两个数组,注意可以是一个数组的两个不同的区间,每次将较小的数存储在一个临时数组中,这样就完成了归并排序。当然,前提是这两个数组是有序的,那么,问题是,如何让这两个数组是有序的 阅读全文
摘要:
``` std::ios::sync_with_stdio(false); ``` 阅读全文
摘要:
二分 二分算法模板 注意此模板只适用于查找a中是否存在v,存在的话则返回其中一个符合条件的位置,并不一定只有那一个位置,这个视情况而定。 lower_bound lower_bound()在一个区间内进行二分查找,返回第一个大于等于目标值的位置(地址) upper_bound upper_bound 阅读全文