随笔分类 - 排序和查找
摘要:优先队列水过~~~ 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 using namespace std;10 11 int seq[30010];12 13 int main()14 {15 int n,m,i,j,order,top,lastorder;16 17 while(scanf("%d %d",&m,&n) != EOF)18 {19 20 priority_queue q1;21 pr...
阅读全文
摘要:给出N个点,判断可以组成多少个正方形。最后输出正方形的个数。 思路:枚举每两个点,计算出另外的两个点,若另外两点存在则正方形存在。 这样得到的结果是最终结果的二倍,因为每一个正方形均累加了两次。 另外两点的计算方法: 设AC和BD的交点O的坐标为(X0,Y0), 则有 X0 = (X1+X3)/2 , Y 0 = (Y1+Y3)/2; 从图上可以看出: X2-X0 = Y3-Y0, Y2-Y0 = X0-X3; 将上述四式合并得: X2 = (X1+X3+Y3-Y1)/2; Y2 = (Y1+Y3+X1-X3)/2; 同理可得: X4 = (X1+X3-Y3+Y1)...
阅读全文
摘要:取余,邻接表。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 struct N11 {12 int data,ans;13 N *next;14 }*hash[2000001] = {NULL};15 16 int Max = 0,Max_num;17 18 N *creat()19 {20 N *p = (N *)malloc(sizeof(N));21 p->next = NULL;22 ...
阅读全文
摘要:特殊的快速排序——归并排序。 给定N个数,求排成升序序列所需要的最小交换次数。每次只能交换相邻的两个数。 作为一名《线性代数》只考了60+的选手竟然一眼就看出要求逆序数有木有,可是我不会求啊有木有,搞来搞去还是要用归并排序啊有木有。 T^T 归并排序的主要思路: 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取...
阅读全文
摘要:链接 :http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2109 1 #include 2 int a[100000],temp; 3 int main() 4 { 5 int sort(int i,int j,int *a); 6 int i,j,n; 7 scanf("%d",&n); 8 for(i = 0;i a[i]) {mark = 0;temp = a[i];a[i] = a[j];a[j] = temp;} 31 ...
阅读全文
浙公网安备 33010602011771号