ACM算法模板
文章平均质量分 71
保存各类算法的模板
白白不狼
我是菜b
展开
-
GCD LCM
GCD欧几里德算法 又称辗转相除法 用来求最大公约数LCM 求最小公倍数这里需要知道一个结论 两个数的最小公倍数等于这两数的乘积除以它们的最大公约数int gcd(int a,int b){return b==0?a:gcd(b,a%b);}int lcm(int a,int b){ return a/gcd(a,b)*b;}这里先进行除法的目的是 a*b可能会溢出...原创 2017-07-28 12:52:46 · 516 阅读 · 0 评论 -
hdu 5015 矩阵快速幂
233 MatrixTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2722 Accepted Submission(s): 1572Problem DescriptionIn our daily life we often use...原创 2017-12-08 20:07:47 · 200 阅读 · 0 评论 -
hdu 5510 KMP+暴力
BazingaTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 6175 Accepted Submission(s): 1905Problem DescriptionLadies and gentlemen, please sit u...原创 2017-12-11 20:45:06 · 201 阅读 · 0 评论 -
优先队列 STL 实现
优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~说到队列,我们首先想到就是先进先出,后进后出;那么何为优先队列呢,在优先队列中,元素被赋予优先级,当访问元素时,具有最高级优先级的元素先被访问。即优先队列具有最高级先出的行为特征。优先队列在头文件#include...转载 2018-02-09 11:27:46 · 598 阅读 · 0 评论 -
ST表
ST表学习 作用:ST算法是用来求解给定区间RMQ的最值,本文以最小值为例举例:给出一数组A[0~5] = {5,4,6,10,1,12},则区间[2,5]之间的最值为1。方法:ST算法分成两部分:离线预处理 (nlogn)和 在线查询(O(1))。虽然还可以使用线段树、树状链表等求解区间最值,但是ST算法要比它们更快,而且适用于在线查询。(1)离线预处理:运用DP思想,用于求解区间最值,并保存到...转载 2018-03-29 00:02:42 · 183 阅读 · 0 评论 -
java的ACM用法(一)
1.输入输出一、基本定义import java.util.*;import java.io.*;import java.util.Scanner;public class Main{public static void main(String[] args){Scanner cin1 = new Scanner(System.in);Scanner cin2 = new Scan...原创 2018-04-01 20:15:39 · 491 阅读 · 0 评论 -
java的ACM用法(二)
2.高精度问题import java.math.BigDecimal;public class ArithmeticUtil { // 小数精确的位数 private static final int DEF_DIV_SCALE = 10; /* 提供精确的加法运算。 v1 被加数 v2 加数 * @return 两个参数...转载 2018-04-01 20:20:58 · 117 阅读 · 0 评论 -
java的ACM用法(三)
大数问题Java中有两个类BigDecimal(表示浮点数)和BigInteger(表示整数)使用这两个类的时候需要加上import java.math.*;Ⅰ基本函数:(1)valueOf(parament); 将参数转换为指定类型例如:int a = 3;BigInteger b = BigInteger.valueOf(a);即b = 3String s = “1234”;BigInteg...原创 2018-04-01 20:26:31 · 148 阅读 · 0 评论 -
java的ACM用法(四)
排序问题 1、Arrays.sort()(1)数字排序 int[] num =newint[]{4,2,3,5,-8,5,2,3}; Arrays.sort(num); for(int i = 0; i < 8;i++) System.out.print(num[i]+”,”); 输出结果:-8,2,...转载 2018-04-01 20:31:21 · 137 阅读 · 0 评论 -
树状数组
树状数组可以解决的问题:动态前缀和问题区间和问题区间加问题,单点查询问题一维树状数组:int d[10005],n;//原数组长度int lowbit(int x){ return x&(-x);}int query(int x)//查询前缀和{ int res = 0; while(x) { res += d[x]; ...原创 2018-04-09 23:38:33 · 155 阅读 · 0 评论 -
LIS 最长上升(下降)子序列(模版)
转载请注明出处:http://blog.csdn.net/u012860063最长递增子序列(Longest Increasing Subsequence)下面我们简记为:LIS。假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,我们可以很轻松的看出来它的LIS长度为5。但是如果一个序列太长后,就不能直接看出来了!下面我们试着逐步找出答案。我们定义一个序列B,然后令 i = ...转载 2018-01-28 20:35:05 · 197 阅读 · 0 评论 -
二叉树的建立与遍历详解 菜鸟都能看懂的教程
树形结构要多利用递归来求解,递归的关键就是想清楚所有的基准情形,然后扩展到一般情况,写代码的时候最好把基准情况放在前面,把一般情况放在后面!定义二叉树结构体:typedef struct BinaryTreeNode{ TelemType data; struct BinaryTreeNode *Left; struct BinaryTreeNode *Right;}N...转载 2017-08-10 13:40:49 · 44779 阅读 · 16 评论