07 2018 档案
摘要:题目大意:给你n个哥布林的坐标,和m个圆,问有多少哥布林不在圆内? 标解就是:扫描线 我们可以将一个圆划分成 2*r + 1部分,然后我们对每一部分求出其上界和下界的左边,并分别打上 上界和下界的标记,然后我们将其加入哥布林那个集合,并按照 x从小到大,y从小到大 进行排序,这样我们就可以在O(n)
阅读全文
摘要:二分答案在比赛中很常用,这个算法看起来很简单,实际上在实现的时候回比较绕。 二分答案的经典问题就是求:最大值最小、最小值最大。 二分答案的主体算法就是下面这样: 求最大值最小和求最小值最大的区别就是以上 "?????" 处的区别。现在总结一下: 求最大值最小问题,总体来说是求最小值,所以 check
阅读全文
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6312 Alice和Bob做一个博弈游戏, 一个集合中的数为1 到 n,一个人每轮可以从中移走一个数,同时将该数的所有因数也全部移除。双方一直轮流这样进行下去,直到一方移除剩余的全部数就获胜。Alice
阅读全文
摘要:唯一分解定理:任何大于1的自然数都可以唯一分解成有限个质数的乘积 这里的 n > 1; 定理就是这样,我们来看一个题目: https://vjudge.net/problem/UVA-10892 首先我们可以将a、b进行分解 a = (p1^a1)*(p2^a2)......(pn^an),b =
阅读全文
摘要:欧拉函数定义:对于正整数N,小于或等于N 且 与N互质的正整数的个数,记为phi(N); phi(N) = N * (1-1/p1) * (1-1/p2) * (1-1/p3) * ...... * (1-1/pk) 这里的p1、p2 ...... pk 是 N 所有的质因数。 欧拉函数性质(推导)
阅读全文
摘要:扩展欧几里得算法:对方程 ax + by = gcd(a, b) ,该算法可以找出这个方程的一对整数解 (x, y) ,这里的 x 和 y 不一定是正数,也可能是负数或零。算法代码如下: 上面的代码仅仅是可以求出方程的一组解,我们还得求出其他解,我们可以经过推导可以得出这个方程的通解为 (x+kn,
阅读全文
摘要:在比赛中我们会遇到形如 (A/B)%MOD 的式子(比如说组合数学中求组合数),但是由于取模对除法没有分配律,所以我们只能乖乖的先算 A/B 再对结果进行取模吗?当A、B较小的时候还行,当A、B很大的时候就不适用了,因为A/B会丢失精度。我们可以将上述式子改写一下 (A/B)%MOD 改为 (A *
阅读全文
摘要:题目大意:有n头牛,两头牛之间可以进行比赛,给出m场比赛的结果,问,有几头牛的战力排名可以确定? 典型的flody求传递闭包问题,之前没仔细想,各种花式拓扑排序,没弄出来。后来才想起是flody 若一场比赛,牛a战胜了牛b,则我们建立一条从a到b的有向边。把每场比赛我们都这么统计一下,就能得到一张有
阅读全文
摘要:最小生成树有两种算法:Kruskal算法 和 Prim算法 算法一:Kruskal算法 基本思想就是:每次选择目前剩余的边中的权值最小的边,若将此边加入图中,不会形成环,则可以加入图中,否则舍弃。判断是否会形成环可以使用并查集算法。 以 HDU - 1879 题为例(题目链接:https://vju
阅读全文
摘要:算法一:Floyed算法 O(n^3) 这个算法复杂度有点高,所以我们推荐下一个算法。 算法二:Dijkstra算法 O(n^2) : 求某个结点到其它所有结点的最短路,但无法用于存在负权边的图 这个算法复杂度低一些,主要思想就是先设定起点 dis[i] = 0, mark[i] = 1; 然后对剩
阅读全文
摘要:题意:给出一个n位的整数,要求删除其中的d个数字,使得剩下的部分最大化。 有简单的做法,我们可以注意到,高位对一个数字的是有绝对的影响力的,所以我们需要保证高位足够大,我们可以这样贪心求解,我们对这n个数字从前往后考虑: 若后一个数字比前一个数字大,则前面这个数字肯定需要删除,并且删除之后我们还得和
阅读全文
摘要:一般的做法就是写一堆if,但是由于题目中的限制比较多,所以陷阱也很多,很容易漏掉一些情况 这里我们采用暴力的方法去实现 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int n, k, cnt; 5 string s0, s1, s2;
阅读全文

浙公网安备 33010602011771号