
acm模板
AC_jie
这个作者很懒,什么都没留下…
展开
-
快速幂模板
LL poeerMod(LL a,LL b)//a的b次幂{ LL ans = 1; a%mod; while(b) { if(b&1)//判断指数是否为奇数。 { ans = ans* a %mod; } a = a * a % mod;//总有一次b会为奇数,原创 2017-05-08 20:20:48 · 275 阅读 · 0 评论 -
收拾旧山河之归并排序
模板#include<cstdio>#include<iostream>using namespace std;const int MAXN = 100;int a[MAXN];void Merge(int left,int mid,int right){ int i = left; int j = mid + 1; in...原创 2018-12-06 16:28:01 · 233 阅读 · 0 评论 -
母函数 生成函数 初步
母函数简单来说就是用于组合计数的函数,利用同底数乘法的性质,来模拟组合问题。 用其指数描述情况种类,其系数描述组合数。 今天先来讲一下模板 这个是hdu1398 一个模板题‘ #include<cstdio> #include<iostream> using namespace std; const int MAXN = 300 ...原创 2018-03-22 16:15:31 · 254 阅读 · 0 评论 -
给定区间整数分解 by kuangbin模板
#include<cstdio>#include<iostream>using namespace std;typedef long long LL;const int MAXN = 1e4;int prime[MAXN + 10];void getprime(){ fill(prime,prime + MAXN,0); for(int i =...原创 2018-02-24 17:18:36 · 206 阅读 · 0 评论 -
poj 3268 Silver Cow Party
求所有奶牛往返的最短时间中最长的,将问题转化为两部分,一是求去时,这部分是将目标点作为起点,将每个点的出边作为数据建立邻接表,二是求回来时,这部分是将目标点作为起点,将每个点的入边作为数据建立邻接表。将上述求得的数据求和找最大。注意图有可能不是连通图。#include#include#include#include#includeusing namespace std;const原创 2018-01-30 16:33:24 · 201 阅读 · 0 评论 -
dijkstra算法
今天看了dijkstra算法,先来说一下核心的东西,首先他是用于边权全是正值的图中,类似于prim利用贪心思想来寻找最短路,利用的原理是;一条最短路的子路也是最短路的思想。每次将找到的新点进行松弛。#include#include#include#includeusing namespace std;const int MAXN = 500 + 10;const int MAX原创 2018-01-29 16:55:42 · 270 阅读 · 0 评论 -
最短路之bellman-ford算法
先来说下bellman-ford算法的基本思想。假设在一个有向图中有n个点,那么从源点到任意其他一点的最短路径数量肯定不超过n - 1(假设不含回路)。那样放松一下限制的话,对于任意一条路径来说,将n - 1条边都尝试着“松弛”一下,那样的话,肯定就可以将这条路径变为最短路。 对于bellman-ford算法来说的话,它是采用类似于floyd算法的方式,每次外循环代表对每个点最多加入可以松弛边原创 2018-01-27 17:46:14 · 276 阅读 · 0 评论 -
最小生成树prim算法
#include #include #include using namespace std; const int MAX = 0x3f3f3f3f; const int MAXN = 100 + 10; int _map[MAXN][MAXN]; int dis[MAXN]; bool tag[MAXN]; int n;原创 2018-01-10 17:24:20 · 243 阅读 · 0 评论 -
hud 4081 次小生成树应用
这个题确实不简单,难就难在对题意的正确的理解上, 题意; 秦始皇想要修路使得n个城市连通,同时使得这些路尽量短。这时徐福说他可以在2个城市之间不花费人力物力建一条路,但他只能建1条这样的路。秦始皇想要使除了徐福造的那条路以外的路的总长度尽量短,而徐福想要造福更多的百姓,他想要使自己用法术建的那条路的两端的城市的总人口数最多。最终二人达成协议。假设A=用法术建的那条路的两端的城市的总人口数原创 2018-01-26 17:48:59 · 240 阅读 · 0 评论 -
poj 2570 Fiber Network floyd 传递闭包与二进制压缩
题意就是每个段光缆被一些公司掌握,询问所给定的一段上的光缆所有可以掌握它的公司,如果有字典序输出,没有的话输出‘-’。 思路: 看完题意不难想到就是个传递闭包将所有点对路径上的公共字符找出来,如果是处理字符串有点麻烦,就引出了一种新的方法和思想,二进制压缩。就是将有限字符集映射到一段二进制数上,这个忽然想起了真值函数的思想,二者本质相同,都是将难以处理的集合元素根据性质映射到01序列上。原创 2018-01-31 10:07:49 · 308 阅读 · 0 评论 -
The Unique MST -----判定最小生成树的唯一性(kruslal算法)
先来说明一下最小生成树不唯一的原因,大的方面来说就是存在权值相同的边,并且这些权值相同的边在构建MIT时都有可能被用到,这是解决这个问题的核心。其实这种情况开可以继续细分, 情况一:权值相同的顶点有公共顶点. 情况二;权值相同的点没有公共顶点 情况三:情况一 + 情况二先来说一下kruslal算法的思想,先构建图,统计图中是否存在权值相同的边,如果没有这种情况直接可判断出 MIT唯一。原创 2018-01-12 13:15:11 · 1078 阅读 · 1 评论 -
线性筛法求素数
出处http://www.cnblogs.com/grubbyskyer/p/3852421.html普通筛选法–埃拉托斯特尼筛法先简单说一下原理:基本思想:素数的倍数一定不是素数 实现方法:用一个长度为N+1的数组保存信息(0表示素数,1表示非素数),先假设所有的数都是素数(初始化为0),从第一个素数2开始,把2的倍数都标记为非素数(置为1),一直到大于N;然后进行下一趟,找到2后面的下一个素数转载 2017-11-08 17:07:35 · 2147 阅读 · 0 评论 -
埃氏筛法与欧拉筛法
埃氏筛法 埃氏筛法的基本的基本原理: 假如要 求n以内的所有素数,就必须将根号n以内的所有素数的倍数全部筛掉。剩下的就是所求的结果。 首先明确一点素数的倍数都是合数。接下来讲一下为什么是求根号n以内的所有素数,而不是n以内的所有素数。一个数总能表示成1个素数和一个数乘积的形式,例如n = a * b ,a是素数,b是另一个数,但是b不是1,这样的话,那就是一个合数,根据n = 根号n * 根号原创 2017-08-28 15:44:23 · 679 阅读 · 0 评论 -
重拾旧山河之快速排序
void quick_sort(int l,int r){ int k = a[l]; if(l < r) { int i = l, j = r; 原创 2018-12-06 21:55:10 · 302 阅读 · 0 评论