- 博客(15)
- 收藏
- 关注
转载 并查集
定义:并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这样的问题...
2018-08-15 15:46:48 221
转载 最短路问题(三种)
一:Floyd-Warshall算法求多源最短路(即任意两点间的最短路), 啊哈磊的讲解十分易懂,http://bbs.ahalei.com/thread-4554-1-1.html直接贴出代码#include <stdio.h>int main(){ int e[10][10],k,i,j,n,m,t1,t2,t3; int inf=99999999...
2018-08-15 15:21:55 9485 1
转载 背包问题
各种背包背包问题大概分下面这几种*部分背包问题*0 1 背包问题*完全背包问题*多重背包问题分析因为物体既有重量又有价值,所以不能简单的先拿轻的(轻的可能价值也小),也能先拿价值大的(它可能特别重),而因该综合考虑两个因素。一种直观的贪心策略就是:优先拿“价值除以重量”最大的,直到重量和正好为W思路那么你作为一个非常优秀的ACMer,肯定应该知道按照什么顺序拿物品的吧。没错,...
2018-08-09 20:37:19 538
转载 树的直径
即树的最长路径#include<cstdio>#include<cstring>#include<vector>#include<iostream>#include<queue> #define MAXN 1000using namespace std;int vis[MAXN];//记录数的节点是否被查找过 int...
2018-08-04 19:17:05 120
原创 拓扑排序
按入度为0的序列排序,找到一个删除一个#include<stdio.h>#include<string.h>#define MAXN 1000int in[MAXN];//记录入度数int p[MAXN][MAXN];//记录两点是否相连int n,m;//m为边数,n为节点数 (1~n)void toposort(){ for(int i=1 ; i...
2018-08-04 19:14:10 106
原创 平面分治(求最近点对)
#include<cstdio>#include<algorithm>#include<cmath>#define MAXN 10100 #define INF 0x3f3f3f3fusing namespace std;struct node{ int x; int y;}point[MAXN];bool cmpx(node a,node...
2018-08-03 20:11:05 294
原创 数列排序(分治与归并)
#include<stdio.h>#define MAXN 10000int arr[MAXN],temp[MAXN];int ans;void merge(int head,int mid,int end){//排序并归并 int i=head,j=mid+1,k=0; while(i <= mid && j <= end){ if(a...
2018-08-03 20:08:59 147
原创 Red and Black HDU - 1312 (DFS)
There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can'...
2018-08-02 18:16:17 138
原创 Rescue (BFS)
Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M <= 200) matrix. There are WALLs, ROADs, and GUARDs in the prison. Angel's friends want to...
2018-08-02 18:14:10 198
原创 线段的重叠(贪心)
X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,10201020和12251225的重叠部分为12201220。给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。Input第1行:线段的数量N(2 <= N <= 50000)。 第2 - N + 1行:每行2个数,线段的起点和终点。(...
2018-08-02 18:05:17 1303
原创 coprime sequence
你知道什么叫做“互质序列”吗?这是一个由神经网络正整数组成的序列,它们的GCD(最大公约数)等于1。“互质序列”很容易被发现,因为它的限制。但是我们可以通过去掉一个整数来最大化这些整数的GCD。现在给出一个序列,请最大化它的元素的GCD。input输入的第一行包含整数T(1<=t<=10)t(1<=t<=10),表示测试用例的数目。在每个测试用例中,第一行中...
2018-08-02 17:54:09 478
转载 存图方法之邻接表和链式前向星
1.邻接表存图:用vector即可#include<cstdio>#include<vector>#include<queue>using namespace std;#define MAXN 1000 vector<int > e[MAXN];//边 vector<int > v[MAXN];//终点 int m...
2018-07-31 16:18:38 854
转载 凸包计算
原文链接:https://www.cnblogs.com/aiguona/p/7232243.html数学:凸包算法详解一.概念:凸包(Convex Hull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,...Xn)的线性组合来构造.在二维欧几里得空间中,凸包可想象为一条刚...
2018-07-26 18:48:22 998 1
原创 求解逆元
定义:(a*b)%c,则a和b关于c互为逆元。推论:(a/b)mod m = (a/b)*1mod m = (a/b)*b*c modm=a*c(mod m); 即a/b的模等于a*b的逆元的模;求解:1:费马小定理费马小定理:a是不能被质数p整除的正整数(费马小定理成立的条件),则有a^(p-1)=1 (mod m);推导:a^(p-1) = 1 (mod p) = a*a^(...
2018-07-24 20:41:56 553
原创 大数求模
一.大数求模一个大数对一个数取余,可以把大数看成各位数的权值与个位数乘积的和。比如1234 = ((1 * 10 + 2) * 10 + 3) * 10 + 4,对这个数进行取余运算就是上面基本加和乘的应用int len = a. length ();long long ans = 0;//题中一般超intfor (int i = 0; i < len; i ++){ ...
2018-07-24 20:04:54 934
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人