算法笔记
丶Xylon
这个作者很懒,什么都没留下…
展开
-
C++ 字符串与数值的转换
C++11头文件:#include <string>转载 2023-10-21 19:54:58 · 86 阅读 · 0 评论 -
cin.tie(NULL)--加速
我是怎么在不知道这一对函数的情况下活到今天的,以前碰到cin TLE的时候总是傻乎乎地改成scanf,甚至还相信过C++在IO方面效率低下的鬼话,殊不知这只是C++为了兼容C而采取的保守措施。tietie是将两个stream绑定的函数,空参数的话返回当前的输出流指针。 1 2 3 4 5 6 7 8 9 10...转载 2019-12-06 21:54:09 · 3021 阅读 · 3 评论 -
米勒-拉宾(MillerRabbin)素性测试算法模板
算法原理详解:https://blog.csdn.net/holly_z_p_f/article/details/85197424#include<bits/stdc++.h>using namespace std;#define ll long long// 18位素数:154590409516822759// 19位素数:2305843009213693951 (...原创 2019-09-21 21:22:20 · 501 阅读 · 0 评论 -
可迭代对象详解
1.可迭代对象我们已经知道可以对list、tuple、dict、set、str等类型的数据使用for...in...的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。把可以通过for...in...这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)。在Python中,迭代可通过for ... in来完成,例如列表的迭代:>&...转载 2019-08-12 17:33:23 · 1432 阅读 · 0 评论 -
双端队列deque详解
deque函数:deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器的尾部元素。但它又与vector不同,deque支持高效插入和删除容器的头部元素,因此也叫做双端队列。deque类常用的函数如下。(1)构造函数deque():创建一个空dequedeque(int nSize):创建一个deque,元素个...转载 2019-08-06 09:43:11 · 3374 阅读 · 0 评论 -
Manacher 算法模板
Manacher算法详解:https://blog.csdn.net/csdn_kou/article/details/82917937#include<bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define mem(a,b) memset(a,b,sizeo...原创 2019-07-27 18:02:01 · 228 阅读 · 0 评论 -
Trie字典树 模板
Trie树详解:https://www.cnblogs.com/llllllpppppp/p/9449846.html#include<bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define mem(a,b) memset(a,b,sizeof(a)) b...原创 2019-07-26 17:54:12 · 207 阅读 · 0 评论 -
深入浅出的讲解傅里叶变换(真正的通俗易懂)
原文出处:韩昊 1 2 3 4 5 6 7 8 9 10 作者:韩昊 知乎:Heinrich 微博:@花生油工人 知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。 ...转载 2019-07-24 14:39:23 · 573 阅读 · 0 评论 -
C++中vector的用法
概述vector是一个容器,可以存放变长数组,并且由使用者自己变化长度,解决了传统数组必须确定长度的问题。vector使用一块连续的内存来存放元素,所以同样可以用指针来获取元素。当在原有vector数组中添加新的元素,需要增加数组长度,但是因为vector使用了一种变长分配数组,所以不需要像普通数组一样开一个新数组,然后把原数组拷贝过去。优秀!vector容器一般会在声明一个数组以后分配...转载 2019-07-17 10:19:56 · 280 阅读 · 0 评论 -
已知后序与中序求前序(先序)序列及代码模板
后序:3, 4, 2, 6, 5, 1(左右根) 中序:3, 2, 4, 1, 6, 5(左根右) 分析:后序序列的最后一位就是树的根节点,在中序序列中找到该根节点,则根节点的左右部分即为左右子树后序:(3 4 2) (6 5) 1中序:(3 2 4) 1 (6 5) 找到第一个根节点,接着重复该过程,拆分后序序列的第一部分即左子树后序:(3 4) 2中序:(3)...原创 2019-01-23 17:23:52 · 6567 阅读 · 1 评论 -
C++中getline()、cin.getline()、gets()等函数的用法
1、getline() // 接受一个字符串,可以接收空格并输出,需包含“#include”#include<iostream>#include<string>using namespace std;int main (){ string str; getline(cin,str); cout<<str<<endl;}...原创 2019-01-18 17:04:16 · 710 阅读 · 0 评论 -
HDU题型分类
基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、 1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、 1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、1170、11...转载 2018-12-02 16:54:52 · 820 阅读 · 1 评论 -
汉诺塔问题的递归与非递归实现
汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作? 递归代码:#include<stdio.h>...原创 2018-10-24 13:03:02 · 768 阅读 · 0 评论 -
第一次讲课——递归
什么是递归?递归(英语:Recursion),又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。——维基百科 这就是递龟让我们看一下Google的回答:你也一定熟悉...原创 2018-10-23 23:53:48 · 521 阅读 · 0 评论 -
第一次讲课——筛选质数
ACM is short for Algorithm, Coding, Math.首先了解一下百度上对于质数的定义:质数质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。换句话说,质数就是只能被1和它本身所整除。根据这个定义,我们用C语言写成代码就是:#include<stdio.h>...原创 2018-10-22 19:54:20 · 386 阅读 · 0 评论 -
ACM进阶计划
ACM队不是为了一场比赛而存在的,为的是队员的整体提高。大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言l 高等数学l 线性代数l 数据结构l 离散数学l 数据库原理l 操作系统原理l 计算机组成原理l 人工智能l 编译原理l 算法设计与分析 除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通的。...转载 2018-08-27 09:39:26 · 204 阅读 · 0 评论 -
输入输出优化模板
输入优化:void read(int &x){ x=0;char c=getchar(); while(c<'0' || c>'9')c=getchar(); while(c>='0' && c<='9') { x=x*10+c-'0'; c=getchar(); } }使用方法:read(n);...原创 2018-08-15 10:56:08 · 307 阅读 · 0 评论 -
数论的一些模板《阶乘、快速幂、费马小定理、卢卡斯定理、欧拉函数》
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cmath>using namespace std;#define ll long longconst int Max = 1e6;#define MOD 1000...原创 2018-08-09 10:53:52 · 281 阅读 · 0 评论 -
ACM所有算法
原文地址 ACM 所有算法 数据结构 栈,队列,链表 哈希表,哈希数组 堆,优先队列 双端队列 可并堆 左偏堆 二叉查找树 Treap 伸展树 并查集 集合计数问题 二分图的识别 平衡二叉树 二叉排序树 线段树 一维线段树 二维线段树...转载 2018-08-06 15:41:19 · 629 阅读 · 0 评论 -
freopen("in.txt","r",stdin) 函数的用法
在做acm题目的过程中,我们需要在本地机器上调试。调试过程中,如果输入数据少还可以接受,但如果输入数据很庞大的话,我们就很难忍受一次又一次的重新输入和调试了。通过google,找到一种简便的方法,那就是freopen函数。使用freopen函数可以解决测试数据输入问题,避免重复输入,不失为一种简单而有效的解决方法。下面为函数的简介,详细可参见http://www.cplusplus.c...转载 2018-07-28 09:15:19 · 27968 阅读 · 0 评论 -
#自用头文件
#include<bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define mem(a,b) memset(a,b,sizeof(a)) int main(){ }#include<iostream>#include<algorit...原创 2018-07-25 16:03:09 · 564 阅读 · 1 评论 -
求大数阶乘(万进制方法)
原文地址#include<stdio.h>#include<string.h>int main() { int n, t, i, j, k, f, a[10000]; while(scanf("%d",&n) != EOF) { memset(a, 0, sizeof(a));//初始化0; t = 1; a[1] = 1; for(i...转载 2018-07-11 17:02:35 · 471 阅读 · 0 评论 -
C++中map的用法
原文地址map的特性是,所有元素都会根据元素的键值自动被排序。map的所有元素都是pair,同时拥有实值(value)和键值(key)。pair的第一个元素会被视为键值,第二个元素会被视为实值。map不允许两个元素拥有相同的键值。 一、map的基本操作函数: begin() 返回指向map头部的迭代器clear() 删除所有元素count...转载 2018-07-11 09:14:25 · 343 阅读 · 0 评论 -
C++中set的用法
原文地址set的特性是,所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。头文件:#include<set>set的各成员函数列表如下:insert()--在集合中插入元素begin()--返回指向第一个元素的迭代器clear(...转载 2018-06-16 22:14:58 · 414 阅读 · 0 评论 -
C++ STL中栈和队列的使用方法
原文地址STL 中栈的使用方法(stack)基本操作:push(x) 将x加入栈中,即入栈操作pop() 出栈操作(删除栈顶),只是出栈,没有返回值top() 返回第一个元素(栈顶元素)size() 返回栈中的元素个数empty() 当栈为空时,返回 true使用方法:和队列差不多,其中头文件为:#include <stack>定义方法为...转载 2018-02-02 14:55:14 · 4544 阅读 · 0 评论 -
最短路径算法模板集合
Prim算法 适用于稠密图,时间复杂度O(n^2)int Prim(){ int i,j,v,tmp,ans=0; for(i=1;i<=n;i++) dis[i]=inf; //初始化 dis[1]=0; for(i=1;i<=n;i++) { tmp=inf; for(j=...原创 2018-02-01 09:54:51 · 489 阅读 · 0 评论