ACM基础算法
Sensente
满船清梦压星河
展开
-
ACM 数论基础
一、从取模开始定义1.1若(a-b)可以被m整除,即(a-b)%m == 0 则称其a与b对m同余,记做栗子:(20-10) / 2 = 5 即20与10 对 2 同余,记做定理1.1同余的基本性质(分别有+-*/四条,暂略)素数线性筛(欧拉筛)const int maxn = 1e8 + 10;int prime[maxn];bool vi...原创 2020-02-13 17:04:50 · 223 阅读 · 0 评论 -
ACM 随机化
参考文档:https://blog.csdn.net/caimouse/article/details/55668071(mt19937随机数)https://blog.csdn.net/sr_19930829/article/details/38236769(POJ 3318)随机化算法即随机生成因子,利用其随机生成数结合题目条件对所给数据进行校验。需要保证前提:1...原创 2020-02-07 00:44:29 · 433 阅读 · 0 评论 -
Graham Scan算法解决凸包问题 学习笔记
Graham Scan解决凸包1.凸包百度百科凸包(Convex Hull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,...Xn)的凸组合来构造.在二维欧几里得空间中,凸包可想象为一条刚好包著所有点的橡皮圈。用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构...原创 2019-06-20 10:33:04 · 380 阅读 · 0 评论 -
POJ3253 Fence Repair(Huffman)
POJ 3253http://poj.org/problem?id=3253题目大意:将一节树枝折断成两节,均会产生与树枝长度相等的费用,问最低费用是多少。样例解释:sorted: 5, 8, 8 (greater)first: 5 + 8 = 13, ans = 13;second: 13 + 8 = 21, ans = 13 + 21 = 34;cout...原创 2019-08-08 16:38:20 · 131 阅读 · 0 评论 -
母函数 学习笔记
组合数学——生成函数参考:1.http://www.wutianqi.com/blog/596.html2.https://www.cnblogs.com/linyujun/p/5207730.html个人理解:用多项式乘法表示某种组合的可能的次数。模版1:#include using namespace std;// Author: Tanky...原创 2019-10-13 20:18:06 · 134 阅读 · 0 评论 -
动态规划 状压DP
一、二进制基础计算:主要有与&,或|,异或^等。&:两者均为1则1,否则为0|:两者均为0则0,否则为1^:两者相同即为0,否则为1部分重要计算:1.判断数字x二进制第i位是否等于1if(((1<<(i−1))&x)>0)解释:将1左移i-1位,即1在第i位上,将其与x进行与运算判断是否大于0即判断是否为12.将数字x二进...原创 2019-10-13 20:13:23 · 159 阅读 · 0 评论 -
有向无环图(DAG)部分算法
补充图的链式前向星:参考:https://blog.csdn.net/acdreamers/article/details/16902023总结:u——起点v——终点w——权值head[i]存放以i为起点的最后一条边存储的位置len[i]来记录所有以i为起点的边在数组中的存储长度edge[i].next表示与第i条边同起点的上一条边的存储位置const int N ...原创 2019-09-16 11:12:04 · 836 阅读 · 0 评论 -
杭电1170 Balloon Comes!
杭电1170http://acm.hdu.edu.cn/showproblem.php?pid=1170题目大意:有点像逆波兰表达式。但是要简单的多。注意:像 / 1 2 这样的输入 应该输出 0.50(保留两位) 而 "/ 2 1" 则是2(无小数保留)。AC代码:#include <iostream>#include <stdio.h...原创 2019-05-04 02:29:27 · 212 阅读 · 0 评论 -
杭电1200 To and Fro
杭电1200http://acm.hdu.edu.cn/showproblem.php?pid=1200题目大意:矩阵字符串处理。AC代码:#include <iostream>#include <cstring>#include <algorithm>#include <memory.h>#include...原创 2019-05-04 01:27:18 · 189 阅读 · 0 评论 -
筛法求素数
名称:算法求素数目的:较快的求出一定范围内的素数核心思想:利用从1到N中依次剔除从2到N-1的任何从2开始的倍数,剩下的数字即为素数;利用算法:数组...原创 2018-12-08 17:40:37 · 174 阅读 · 0 评论 -
算法基础 排序
排序一、桶排序顾名思义,一个萝卜一个坑,对应任何一个数字都开一个数组下标与之对应。排序时间复杂度较小。但是空间复杂度可能会很高。因为即使有2个数字,1和100000也要开到1~1000001个数组空间。同时也无法处理浮点数。适用于密集型整数数据。#include <iostream>using namespace std;int book[10001];...原创 2019-01-26 00:53:49 · 99 阅读 · 0 评论 -
数据结构 链表
链表是解决变长数组的良好方式,可以自适应的增长空间长度,同时方便做定向插入和删除。一、链表的结构链表的各个储存单元称为结点。一个结点主要由两个部分组成,一是数据本身,另一部分是后继指针,用于指向后一个数据,以形成链表。首先定义一个结构体变量来储存结点。struct node { int data; struct node *next;}第二步,建立链表。...原创 2019-02-02 10:58:14 · 177 阅读 · 0 评论 -
图论——最短路算法学习笔记
最短路算法1.FLOYD算法多源最短路预处理:二维数组储存两点之间的边距离,初始化为正无穷即可。自己到自己为0;核心代码:int inf = 999999;for(int k=1;k<=n;k++) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(e[i][k]...原创 2019-03-29 23:05:28 · 269 阅读 · 0 评论 -
杭电1013 Digital Roots(九余数定理)
杭电1013http://acm.hdu.edu.cn/showproblem.php?pid=1013题目大意:所谓数根。即数字各个位置之和。若和大于10,则需要再次求和,直到小于10.AC代码:#include <iostream>#include <cstring>#include <algorithm>#in...原创 2019-05-03 20:26:12 · 201 阅读 · 0 评论 -
杭电1163 eddy's Digital Roots
杭电1163http://acm.hdu.edu.cn/showproblem.php?pid=1163题目大意:求n^n的数根(同九余数定理)AC代码:#include <iostream>#include <stdio.h>#include <cstring>#include <algorithm>#...原创 2019-05-03 21:02:15 · 157 阅读 · 0 评论 -
杭电1009 FatMouse's Trade
杭电1009http://acm.hdu.edu.cn/showproblem.php?pid=1009题目大意:一只肥鼠一开始有M个猫粮,经过N个房间。在每个房间,它可以用F[i]*a%的猫粮去换取J[i]*a%的鼠粮。由于物品可分割,不能使用背包。直接贪心,用结构体构造,按照Rate = f / j 这样的最大比例去排序,依次拾取即可。AC代码:...原创 2019-05-03 21:45:19 · 188 阅读 · 0 评论 -
牛顿迭代法简介
名称:牛顿迭代法目的:求算术平方根(可以在复数域范围内求解,在此仅做实数范围)核心思想:概括的说,欲求A的平方根,先猜测一个值如A/2(或其他任何值),后由迭代公式计算。直到小于某个已经给定的精度ε(Xn+1与Xn差的绝对值),即可认为该输出值是ε精度上的平方根。迭代公式:Xn+1=(Xn+A/ Xn)/2与算法的关系:运用到迭代的循环思想。算法实现(C++):#include...原创 2018-12-05 16:56:07 · 1258 阅读 · 0 评论