ACM模板
ramay7
Life is not short,but float.
展开
-
归并排序及利用归并排序求逆序对数
#include #include #include #include #include using namespace std; /* 用归并排序顺便完成统计逆序对数。 因为合并操作是从小到大进行的,当右边的a[q]复制到T中时,左边还没来得及复制到T中的那些数就是左边所有比a[q]大的数。 此时在累加器中加上左边的元素个数m-p即可(左边剩余元素在区间[p,m)中,因此元素个数为m-原创 2016-02-27 14:53:04 · 557 阅读 · 0 评论 -
POJ 1981 Circle and Points(求半径R圆覆盖最多点数及由圆上两点和半径求圆心)
题目: POJ 1981 Circle and Points HDU 1077 Catching Fish 题意: 给出n个点的二维点坐标,问单位圆最多能覆盖多少点? 分析: ①: 最优的情况一定是有两个点在圆弧上。先枚举两个点,计算两点在圆弧上的单位圆(一般会有两个) 但是可以统一取一个方向的(也就是AB取一个然后BA取另外一个).然后枚举所有点,计算在这个单位圆内的点的个数。原创 2016-04-13 23:01:35 · 2841 阅读 · 0 评论 -
模板--二维凸包(1)
二维凸包模板: 1.求凸包顶点 2.Graham扫描法 3.判断稳定凸包 4.凸包直径 5.凸包周长及面积 6.凸包内最大三角形面积 7.凸包最小外接矩形面积 8.凸包最小外接平行四边形面积原创 2016-04-19 01:21:45 · 624 阅读 · 0 评论 -
模板--二维凸包(2--两相离凸包最短距离)
目的: 求两相离凸包最短距离。 工具: 点到线段最短距离 线段上点最短距离 将所有点顺时针排序 #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <climits> #include <iostream> using namespace std; const int MAX_N=原创 2016-04-23 01:33:17 · 676 阅读 · 0 评论 -
模版--矩阵快速幂
#include <cstdio> #include <cstring> #include <cmath> #include <climits> #include <algorithm> using namespace std; const long long mod=(long long)(1e9+7);struct Matrix{ int row,col; long long d原创 2016-03-19 23:05:32 · 284 阅读 · 0 评论 -
模板--判断两线段是否相交
题目链接: POJ 1127 Jack Straws 题意: 已知n条木棍的起点和终点坐标,问第i条木棍和第j条木棍是否相连?当两条木棍之间有公共点时,就认为他们时相连的。通过相连的木棍 间接的连在一起的两根木棍也认为时相连的。 分析: 木棍就是二维平面上的线段,只要能判断线段是否相交,那么建图后可以通过Floyd算法或者并查集进行连接性判断。 如何判断两条线段是否相交原创 2016-04-16 16:16:10 · 1361 阅读 · 0 评论 -
模板--最短路(简单)
以POJ 1847为例。 /* 有N个路口,计算从a路口到b路口的最短转弯数。 对于每一个路口,有t个分叉口,第一个分叉口是直行,也就是不用转弯 剩下的t-1个路口都需要转弯一次。 */ /************Dijkstra***************/ #include #include #include #include #include #include原创 2016-02-15 16:30:04 · 374 阅读 · 0 评论 -
模版--两圆相交部分面积
题目: POJ 2546 Circular Area 题意: 计算两圆公共部分面积 //260K 0MS G++提交WA,C++提交AC o(╯□╰)o #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <cmath> using n原创 2016-04-15 00:06:45 · 647 阅读 · 0 评论 -
模版--大数加减乘除
/* 因为计算大数除法时需要用到乘法和减法, 但是不指定字符串长度的乘法和减法不容易用字符数组表示, 所以这里就没写用字符数组计算的大数除法。o(╯□╰)o *//***********大数加减乘/仅限正整数***************/ //加法测试:HDU 1002 //减法测试:百练OJ 2736 //乘法测试:百练OJ 2980#include <cstdio> #include <cst原创 2016-04-13 21:33:50 · 805 阅读 · 0 评论 -
快速排序和查找第K大元素
/* 输入n个整数和一个正整数k(1<=k<=n),输出这些整数从小到大排序后的第k个(例如,k=1就是最小值)。n<=10^7. 快速排序的时间复杂度为:最坏情况下:O(n^2),平均情况下:O(nlogn). 查找数组中第k大的元素的平均时间复杂度为:O(n). */ #include #include #include #include #include using namespa原创 2016-02-27 15:33:39 · 1777 阅读 · 0 评论 -
数据生成 -- 树
生成一个nn个节点的树和n−1n-1条无向边(无边权),生成数据时需要注意无重边,无环,和所有节点编号都要在边的信息中出现。我是把最后一条边设为(n−1,n)(n-1,n),并且在之前保证这两个节点不连通。这个似乎破坏了一些随机性:)#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #includ原创 2016-08-03 11:46:32 · 408 阅读 · 0 评论