![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法总结
文章平均质量分 61
算法总结
对你说的对
这个作者很懒,什么都没留下…
展开
-
HDU 2.2.5(平面划分问题)
(1) n条直线最多分平面问题题目大致如:n条直线,最多可以把平面分为多少个区域。析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。 这样就会得到n-1个交点。这些交点将第n条直线分为2条射线和n-2条线断。原创 2017-05-31 22:51:33 · 242 阅读 · 0 评论 -
HDU 大数算法
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include us原创 2017-06-12 19:02:48 · 295 阅读 · 0 评论 -
HDU 最大公约数和最小公倍数
最大公约数1、辗转相除法int gcd(int x,int y){ if(x>y) { int m=x; int n=y; } else { m=y; n=x; } int r=n; while(r) { r原创 2017-05-26 09:01:04 · 424 阅读 · 2 评论 -
排列组合---隔板法
1、定义 隔板法就是在n个元素间插入(b-1)个板,即把n个元素分成b组的方法。C(n-1,b-1) 2、条件 隔板法必须满足三个条件: (1)这n个元素必须相同,(2)所分成的每一组至少分得一个元素,(3)分成的组别彼此差异。 3、示例 (1)例如:某校组建一球队需16人,该校共10个班级,且每个班至少分配一个名额,共有几种情况。C(16-1,10-1)。 ...原创 2018-08-16 09:50:22 · 18430 阅读 · 0 评论 -
最近公共祖先LCA---在线倍增算法
在线求LCA,多次询问。倍增算法时间复杂度为。 1、dfs求每个节点所在层数void dfs(int u,int root,int d){ int i; depth[u]=d; fa[u][0]=root;//初始化 int sz=edge[u].size(); for(i=0;i<sz;i++) { int ...原创 2018-11-09 21:40:25 · 215 阅读 · 0 评论 -
树状数组总结
树状数组区间更改差分数组原理 1、单点更新,区间求和int c[MAXN];int sum(int x){ int res=0; while(x) { res+=c[x]; x-=lowbit(x); return res; }void add(int x,int n){ whil...原创 2018-09-30 20:45:51 · 116 阅读 · 1 评论 -
AC自动机小结
在模式匹配算法中,如果模式串比较少,用KMP算法。对于多模板匹配,因为每一次查找一个模板,都要遍历整个长文本,故KMP不适用。用KMP+字典树的AC自动机,把所有的模板建立失配状态转移图。AC自动机适用于长文本的多模板匹配问题。 #include<bits/stdc++.h>using namespace std;const int maxnode=11000;//最...原创 2018-09-06 15:45:33 · 95 阅读 · 0 评论 -
费马小定理+费马大定理
费马小定理: 假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p),例如:假如a是整数,p是质数,则a,p显然互质(即两者只有一个公约数1),那么我们可以得到费马小定理的一个特例,即当p为质数时候, a^(p-1)≡1(mod p)。费马大定理:当整数n >2时,关于x, y, z的方程 x^n + y^n = z^n 没有正整数解。...原创 2018-08-26 15:51:42 · 745 阅读 · 0 评论 -
组合数模板
#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll MOD=998244353;const ll MAXN=262144+5;ll a[MAXN];ll fact[MAXN],ifact[MAXN];//fact[i]是i的阶乘,ifact[i]是阶乘的除法逆元,两者用于求...原创 2018-08-15 21:51:01 · 153 阅读 · 0 评论 -
快速幂(整数快速幂+矩阵快速幂)
1、整数快速幂 例如求x^8 就是x*x*x*x*x*x*x*x 正常的运算方式是,x的值一个个往上乘上去,乘法运算运行7次(x x)(x x) (x x)(x x) 也可以采用这种运算方式,先进行乘法得到x^2再对x^2进行三次乘法。这种运算要明显比第一种情况要快 所以对于整数快速幂,也是结合了这种思想(x^m)*(x^n)=x^(m+n) x^19=(...原创 2018-08-14 10:48:10 · 700 阅读 · 0 评论 -
欧拉公式
平面图欧拉定理:一个连通平面图满足 R=E−V+2 其中 R 是域的个数(包括无穷域), E 是边集, V 是点集 如果平面图不连通 R=|E|−|V|+K+1,K 为联通块数量。 在圆上找n个点,n个点两两连接,会划分为几个区域。 相关题目:https://blog.csdn.net/jinghui_7/article/details/81625674h...原创 2018-08-13 10:51:52 · 1246 阅读 · 0 评论 -
棋盘染色问题(棋盘遍历)
棋盘染色法论文对于棋盘黑白格的应用,目前遇到两种,大同小异。1、题目链接 当n和m中有一个为奇数或者全为奇数,走蛇形路,一笔画一定可以到达。 当n和m全为偶数,将棋盘黑白涂色(只能从黑色格子到白色格子或者从白色格子到黑色格子),左上角和右下角都为黑色,中间如果忽略一个白色格子,则可以到达。要求路径权值和最大的话,不走权值最小的白格子就可以了。(当n,m都为偶数时,就是...原创 2018-08-13 10:08:06 · 6458 阅读 · 0 评论 -
大数模板
大数思路简单,实现起来比较复杂,考虑的情况比较多。 C++的模板,用char数组实现的点击打开链接 尝试写了几个用String实现的 string add(string num1, string num2) { string num(1000, '0'); if(num1.empty() || num2.empty()) {原创 2017-09-27 18:11:41 · 140 阅读 · 0 评论 -
LIS算法
Lis算法的解析博客: 点击打开链接原创 2017-09-28 16:22:33 · 248 阅读 · 0 评论 -
DP专题
1、点击打开链接将n个物体分为m-1段,每一段一半的重量不超过d,使重量最大的段的一半最小,并输出这个值。每一段物体数量一定为偶数。思路:二分+dp二分出可能的答案值x,看在一半重量不超过d的情况下最多能分成几段,用dp解决。#include<bits/stdc++.h>using namespace std;const int inf=0x3f3f3f3f;int w[40...原创 2018-06-10 22:22:01 · 223 阅读 · 0 评论 -
字典树算法
今天看的字典树,一开始就理解歪了,怎么看怎么不懂。 一开始看的是动态模板,那个指针跟指针相关的函数,当时C++学的时候就了解的不深,直接看不懂。看了一会之后放弃,开始看静态模板。虽然内存消耗挺大,但是在没办法。有几个问题想了好久才理解。 1、字典树的根节点为0,不存放任何字母,仅用于把所有的字典树连在一起。 2、将字母转化为数字存放在节点中,也可以把它当做边的权值。原创 2018-01-23 23:04:21 · 191 阅读 · 0 评论