
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 · 589 阅读 · 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 · 3060 阅读 · 0 评论 -
模板--二维凸包(1)
二维凸包模板:1.求凸包顶点2.Graham扫描法3.判断稳定凸包4.凸包直径5.凸包周长及面积6.凸包内最大三角形面积7.凸包最小外接矩形面积8.凸包最小外接平行四边形面积原创 2016-04-19 01:21:45 · 679 阅读 · 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 · 748 阅读 · 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 · 316 阅读 · 0 评论 -
模板--判断两线段是否相交
题目链接: POJ 1127 Jack Straws 题意: 已知n条木棍的起点和终点坐标,问第i条木棍和第j条木棍是否相连?当两条木棍之间有公共点时,就认为他们时相连的。通过相连的木棍 间接的连在一起的两根木棍也认为时相连的。 分析: 木棍就是二维平面上的线段,只要能判断线段是否相交,那么建图后可以通过Floyd算法或者并查集进行连接性判断。 如何判断两条线段是否相交原创 2016-04-16 16:16:10 · 1402 阅读 · 0 评论 -
模板--最短路(简单)
以POJ 1847为例。/*有N个路口,计算从a路口到b路口的最短转弯数。对于每一个路口,有t个分叉口,第一个分叉口是直行,也就是不用转弯剩下的t-1个路口都需要转弯一次。*//************Dijkstra***************/#include #include #include #include #include #include原创 2016-02-15 16:30:04 · 413 阅读 · 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 · 689 阅读 · 0 评论 -
模版--大数加减乘除
/*因为计算大数除法时需要用到乘法和减法,但是不指定字符串长度的乘法和减法不容易用字符数组表示,所以这里就没写用字符数组计算的大数除法。o(╯□╰)o*//***********大数加减乘/仅限正整数***************///加法测试:HDU 1002//减法测试:百练OJ 2736//乘法测试:百练OJ 2980#include <cstdio>#include <cst原创 2016-04-13 21:33:50 · 863 阅读 · 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 · 1829 阅读 · 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 · 460 阅读 · 0 评论