总结
文章平均质量分 61
CN_swords
这个作者很懒,什么都没留下…
展开
-
单调队列理解及应用
单调队列:队列中元素之间的关系具有单调性,队首和队尾都可以进行出队操作,只有队尾可以进行入队操作。作用:对于维护好的单调队列,不断地向队列里入队元素,也不时地出队过老的元素(比如:超出区间范围),不定期的询问当前队列里的最优的元素。维护:1.队尾入队的时候,同单调栈维护单调性。2.队头不满足要求(过时的)出队。poj 2823队尾维护单调队列,队头超出范围(即超出目原创 2017-11-12 14:11:06 · 616 阅读 · 0 评论 -
快速幂及矩阵应用(学习)
快速幂顾名思义,就是快速算某个数的多少次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。快速幂算是个小技巧,在平时做题时会有用到。虽然它简单,但是还是需要我们认真学习一下的。适用于求幂再取模,如:(a^b)%p。 如果 b = 32, 那么 a^32=(a^16)*(a^16) a^16=(a^8)*(a^8) a^8=(a^4)*(a^4) a^4=(a^原创 2016-09-12 19:02:41 · 425 阅读 · 0 评论 -
拓扑排序(学习)
拓扑排序:拓扑排序是对有向无环图的一种排序。 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若 ∈ E(G),则u在线性序列中出现在v之前。 通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。由AOV网构造拓扑序列的拓扑排序算法主要是原创 2016-08-30 14:28:12 · 543 阅读 · 0 评论 -
【总结】图的表示
邻接表 一、邻接表 邻接表是图的一种链式存储结构。 邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点Vi的边(对有向图是以顶点Vi为尾的弧)。二、无向图的邻接表 三、有向图的邻接表和逆邻接表 (一)在有向图的邻接表中,第i个单链表链接的边都是顶点i发出的边。 (二)为了求第i个顶点的入度,需要遍历整个邻接表。因此可以建立逆邻接表。 (三)在有向图的逆转载 2016-08-28 21:43:09 · 772 阅读 · 0 评论 -
最小生成树题集
A题,L题:poj2421 简单题 题意:题目这么长,其实大部分都在扯逼-_-。以字母代替点,每行输入字母,与其相连的个数,以及相连的具体点和其距离,计算全联通最小距离。 题解:只需要把字母距离化为可用的每两点距离,或邻接矩阵即可。注意:并查集初始化别和输入一起了,因为输入只有n-1次,我就少初始化了wa了一次。不知道在L题能A的情况下A题runtime error了。。。B题 poj1287原创 2016-08-01 20:21:16 · 3548 阅读 · 0 评论 -
最小生成树[Kruskal&&Prim](学习)
本文是我边学习边写下的博客,望大家一起学习,错误请指出。主要我会以代码显现些图联通的过程,如果并不能领悟,建议大家去看一些有图解析的博客吧,我们再来领略些入门题目,不断更新呗-_-。最小生成树:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。要求图权重和最小,通俗的讲,我们没办法再找到另一个边去代替树中的边使得图的权重和更小。Pri原创 2016-07-21 22:40:56 · 429 阅读 · 0 评论 -
大数运算模板(C语言)
代码说明: //大数相加#include <stdio.h>#include <string.h>#define MAXN 100int an1[MAXN+10];int an2[MAXN+10];char str1[MAXN+10];char str2[MAXN+10];int main(){ memset(an1,0,sizeof(an1)); int i,j;原创 2016-07-20 22:08:58 · 2599 阅读 · 0 评论 -
一秒会用优先队列(学习)
一秒。。。那是骗人的,其实我也不会用啦!!!一起来学习一下吧,我保证基本的用法你很快能掌握的。试着测下这个代码吧。#include <stdio.h>#include <functional>#include <queue>using namespace std;int a[] = {20,1,34,45,2,76,34};int main(){ int n = 7;原创 2016-10-08 19:48:59 · 335 阅读 · 0 评论 -
背包之01背包、完全背包、多重背包详解
背包之01背包、完全背包、多重背包详解 转载于:http://www.wutianqi.com/?p=539PS:大家觉得写得还过得去,就帮我把博客顶一下,谢谢。首先说下动态规划,动态规划这东西就和递归一样,只能找局部关系,若想全部列出来,是很难的,比如汉诺塔。你可以说先把除最后一层的其他所有层都移动到2,再把最后一层移动到3,最后再把其余的从2移动到3,这是一个直观的关系转载 2016-10-02 11:06:57 · 386 阅读 · 0 评论 -
【判段同构】字符串最小表示法
字符串的最小表示法是什么?其实就是求字符串S的所以同构S'中字典序最小的一个,返回是最小的首字符的下标。举一个例子:M(“bbcaab”) = 3。原创 2016-10-01 21:59:20 · 461 阅读 · 0 评论 -
三分法查找(学习)
我们了解下从二分衍生出来的三分法 摘自hihocoder(略改): 当函数是凸形函数时,二分法就无法适用,这时就需要用到三分法。 从三分法的名字中我们可以猜到,三分法是对于需要逼近的区间做三等分: 如图这种情况先减后增,适用于求答案的极小值,若lm比rm低(即lm对应的函数值 < rm函数值)则极小点(图中最低点)肯定在[ left, rm ] ,反之在[ lm, right ],剩下就跟二原创 2016-12-02 19:05:49 · 2063 阅读 · 0 评论 -
二分法查找(all way)
通过长时间的查询,不得不说自己总结才是最好的。 1.最基础的二分查找: 查找数组里是否有存在数值e。#include<bits/stdc++.h>using namespace std;int a[] = {1,1,2,3,3,3,5,6,7,11,13,24,25};int Bsearch(int l,int r,int e){ while(l <= r) //注原创 2016-11-15 22:23:30 · 517 阅读 · 0 评论 -
【总结】母函数有感
2016/5/28 对于母函数的题目,我认为再理解方程组的系数和指数的基础上,我们做好两件事就可以对其有大致思路。 1. 构建方程组 2. 代码模拟方程组我们先对方程组理解下,一般对题目构建方程组。 比如: 1.要求 n 的组成方法数 。 (1+n+n^2+n^3+…) * (1+n^2+n^4+…) * … * (1+n^n+n^(2n)+…) 我们就以这个方程组为例讲解,首先理解“原创 2016-05-28 21:17:19 · 329 阅读 · 0 评论 -
同余方程组,中国剩余定理,孙子定理(学习)
同余方程组,中国剩余定理(孙子定理)学习从孙子定理介绍起把,其实对于它的由来大家还是很有兴趣了解一下的。 以下是我取于互动百科的内容: 中国南北朝时期(5~6世纪)著名的著作《孙子算经》中“物不知数”问题所阐述的定理。物不知数问题的原题是:“今有物,不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”这属于数论的一次同余方程组问题。用现代数学符号可表为求下列同余方程的整数解: ...原创 2016-05-24 22:28:28 · 10561 阅读 · 0 评论 -
单调栈理解及应用
单调栈:栈内元素,按照(单调递增或单调递减)排序,如果新入栈元素破坏了单调性,就弹出栈内元素,直到满足单调性。作用:o(n)时间复杂度分别求左右两边第一个比它大或比它小的元素。(单调递增栈为例)维护:每次入栈前先检验栈顶元素和进栈元素的大小,判断栈内元素是否出栈(栈内元素大于等于入栈元素则栈内元素出栈),直到进栈元素入栈。发挥作用的原理:1.进栈元素能入栈的时候,此时栈顶元原创 2017-11-12 14:08:59 · 486 阅读 · 0 评论 -
【总结】求组合数的方法
对于求 C(n,m)%mod 的方法1. 在n,m都不大时,可以利用杨辉三角直接求。void C(){ for (int i=0;i<=500;i++) c[i][0]=1; for (int i=1;i<=500;i++){ for (int j=1;j<=i;j++) c[i][j]=(c[i-1][j-1]+c[i-1][j]) % MOD; }}原创 2017-07-29 09:31:13 · 325 阅读 · 0 评论 -
【总结】理解欧几里德及扩展欧几里德算法
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。gcd(a,b)由递推所得,自然需要初始值和递推式。1. a = b , b = a%b 这个递推式由公理 gcd(a,b)=gcd(b,a mod b) 所得。证明:gcd(a,b)=gcd(b,a%b) (a>b)设a = k*b + c, 则 a % b = c; (设 d为a,b的公约数), 则 a/d,原创 2017-07-24 20:50:49 · 450 阅读 · 0 评论 -
【总结】理解KMP算法思想
理解KMP算法思想学习算法应知思想,而非记结论和代码。先列出其结论:KMP算法可以解决模式串在目标串出现的位置,次数等。以及其next[]思想可以解决字符串前缀和后缀最长的公共部分(前缀不包括尾部,后缀不包括头部)。其主要思想:通过计算之前匹配过的位置,节省重复匹配的时间。举例:目标串为:“cbaabababacb”; 模式串为:“ba原创 2017-07-10 21:00:52 · 3012 阅读 · 0 评论 -
【总结】计算几何模板
计算几何模板 1. 几何公式 1.1 角:1.正弦定理:a/sinA = b/sinB = c/sinC = 2R2.余弦定理:a² = b²+c²-2bc*cosAb² = a²+c²-2ac*cosBc² = a²+b²-2ab*cosC3.倍角公式:sin(2α)=2sinαcosαcos(2α)=(cosα)²-1=1-2(sinα)原创 2017-05-15 19:54:28 · 1940 阅读 · 1 评论 -
set 理论知识(学习)
STL中的set容器的一点总结1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如转载 2017-02-17 21:39:08 · 728 阅读 · 0 评论 -
状压dp - 棋盘问题(学习)
转载自:http://blog.csdn.net/math_coder/article/details/9671581如果看不明白代码的位运算,请先了解下位运算的应用**********此文章属于原创,看此文章前请先参考论文 周伟《动态规划之状态压缩》**********问题1: 在n*n(n≤20)的方格棋盘上放置n个车(可以攻击所在行、列),求转载 2017-02-16 11:26:07 · 2071 阅读 · 0 评论 -
位运算应用
位运算应用按位与: (&)全一为一,否则为零。应用:1. 取出一个数的一些二进制位。(x&(1 2. 取出一个数的最后一个二进制位1。(x&(-x))【10100 & (01100) = 4】最后一个二进制位是第三位按位或: (|)有一为一,否则为零。应用:将某些位设为1。(x|(1 按位取反: (~)是一为零,是零为一。按位异或: (^)不同为一,原创 2017-02-16 10:12:48 · 264 阅读 · 0 评论 -
【总结】母函数理论知识
在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。对每个序列都可以写出以上每个类型的一个母函数。构造母函数的目的一般是为了解决某个特定的问题,因此选用何种母函数视乎序列本身的特性和转载 2016-04-26 20:07:38 · 521 阅读 · 0 评论 -
vector理论知识(学习)
vector理论知识vector就是数组在C++中的另一种称呼,vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 vector类型与数组类型比较:vector类型长度是动态的,可以根据需要动态的调用push_back函数添加新的元素,而数组的长度是固定的;数组没有获取数组大小的函数,而ve原创 2016-04-29 19:35:09 · 470 阅读 · 0 评论 -
String理论知识(学习)
**表明文章转载于:http://www.jb51.net/article/41725.htm 本人稍加做下编排。**标准c++中string类函数介绍之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作转载 2016-05-04 18:20:44 · 470 阅读 · 0 评论 -
相加型整数划分总结篇
总结: 整数划分问题主要可以分成两种解决方法; 1.dp[i][j]代表 n为i,j作为划分的最大数限制的方法数。 这种方式要考虑i,j三种情况分别处理,i < j时主要思考方向是存在j否。(取j,dp[i-j][j]) 2.dp[i][j]代表 n为i,j作为划分的个数限制的方法数。 这种方式只考虑i < j情况,i < j时主要思考方向是存在1否。(截边, dp[i原创 2016-10-28 21:09:57 · 351 阅读 · 0 评论