模版
文章平均质量分 71
白白不狼
我是菜b
展开
-
优先队列 STL 实现
优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~说到队列,我们首先想到就是先进先出,后进后出;那么何为优先队列呢,在优先队列中,元素被赋予优先级,当访问元素时,具有最高级优先级的元素先被访问。即优先队列具有最高级先出的行为特征。优先队列在头文件#include...转载 2018-02-09 11:27:46 · 601 阅读 · 0 评论 -
LCS(最长公共子序列)
求两个字符串的最长公共子序列的长度(子序列不一定是原串中的连续子串组成)LCS使用动态规划#include <iostream>#include <string>#include <vector>using namespace std;int lcs_len(string s1, string s2){ int len1 = s1.siz...原创 2018-04-10 16:54:08 · 204 阅读 · 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 · 185 阅读 · 0 评论 -
浅谈trie树(字典树)
Trie树(字典树)一、引入字典是干啥的?查找字的。字典树自然也是起查找作用的。查找的是啥?单词。看以下几个题:1、给出n个单词和m个询问,每次询问一个单词,回答这个单词是否在单词表中出现过。答:简单!map,短小精悍。好。下一个2、给出n个单词和m个询问,每次询问一个前缀,回答询问是多少个单词的前缀。答:map,把每个单词拆开。judge:n<=200000,TLE!这就需要一种高级数据结...转载 2018-04-24 23:25:38 · 159 阅读 · 0 评论 -
01字典树
以前一直以为字典树没有多少用,但是最近一直碰到(难道是以前刷题太少的原因么),其中有一类问题叫做01字典树问题,它是用来解决xor的有力武器,通常是给你一个数组,问你一段连续的异或和最大是多少,正常思路贪心dp啥的都会一头雾水,但是用01字典树就能很快的解决,实现起来也十分方便。将要插入的数的二进制位倒着建树(为什么?因为异或时高位尽量大,结果才尽量大),即高位在深度低的节点上01字典树的普遍模版...转载 2018-04-24 23:52:52 · 317 阅读 · 0 评论 -
浅谈二分问题
二分主要应用于一段区间求满足题意的单点(或单个状态)问题区间一般呈现的是线性的关系因此可以对区间每次分成两个部分,每次分割后进行一次判定,直到找到符合条件的点思路的大致代码#include<bits/stdc++.h>using namespace std;int main(){ int l = 0 ,r = R ,ans = 0; while(l <...原创 2018-04-25 09:19:21 · 1100 阅读 · 0 评论 -
stl map使用详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有...转载 2017-12-11 18:17:50 · 298 阅读 · 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 · 204 阅读 · 0 评论 -
kd-tree详解
kd-tree适用的范围: 二维平面最近点对之间的操作,动态维护、询问、查询等。包括曼哈顿距离和欧几里德距离。曼哈顿距离和欧几里德距离:1.曼哈顿距离曼哈顿距离又称Manhattan distance,还见到过更加形象的,叫出租车距离的。具体贴一张图,应该就能明白。上图摘自维基百科,红蓝黄皆为曼哈顿距离,绿色为欧式距离。2.欧式距离欧式距离又称欧几里得距离或欧几里得度量(Euclid...原创 2018-06-01 01:04:30 · 1222 阅读 · 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 · 205 阅读 · 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 · 158 阅读 · 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 · 144 阅读 · 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 · 199 阅读 · 0 评论 -
二叉树的建立与遍历详解 菜鸟都能看懂的教程
树形结构要多利用递归来求解,递归的关键就是想清楚所有的基准情形,然后扩展到一般情况,写代码的时候最好把基准情况放在前面,把一般情况放在后面!定义二叉树结构体:typedef struct BinaryTreeNode{ TelemType data; struct BinaryTreeNode *Left; struct BinaryTreeNode *Right;}N...转载 2017-08-10 13:40:49 · 44831 阅读 · 16 评论 -
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 · 521 阅读 · 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 · 495 阅读 · 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 · 124 阅读 · 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 · 153 阅读 · 0 评论 -
两种最短路
//基于迪杰斯特拉算法和弗洛伊德算法的最短路#include<iostream>#include<cstdio>#include<algorithm>#include<vector>#include<cstring> const int inf = 0x3f3f3f3f;int G[1000][1000];bool ...原创 2018-10-14 20:31:20 · 241 阅读 · 0 评论