排序
文章平均质量分 81
LiWen_7
这个作者很懒,什么都没留下…
展开
-
归并排序 hdu 3743
归并排序 百科名片 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并排序 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应原创 2012-07-10 21:45:09 · 1389 阅读 · 0 评论 -
二分搜索
前提条件:有一组数已经按从小到大(或从大到小)排序 目标:输入一个数x,在这组数查找是否有x 迭代法的程序代码: #include #define N 10 int find(int a[ ], int x, int bott, int top); void main( ) { int i, x, a[N], result; printf("\n 输入数组 a:\n")原创 2012-07-11 17:00:30 · 459 阅读 · 0 评论 -
二分答案
ccsu 1493 青蛙过河 Description 有一条宽度为L(1≤L≤ 1,000,000)的河。河中间有N(0≤N≤20000)块石头,青蛙从河西岸经过这N个石块后,顺利跳到了河的东岸。设河中间每个石块距离西岸的距离为Di(其中Di大于0小于L)。注意:Di是距离起始河岸的距离。 小明闲着没事,想移掉河中间的M(0≤M≤N)个石块,让一些石块之间的距离增大一点,好叫青蛙没那原创 2012-07-12 16:18:54 · 2960 阅读 · 0 评论 -
hdu 4190 二分答案
题目大意: 有n个城市,m个投票箱,接下来n个城市人口数,每个投票箱都不能为空,计算最后投票箱的容量必须达到多少,才能满足需要。 限制: 每个城市的人必须只能将票投到自己城市分得得投票箱中。 #include #include #include #define size 500010 using namespace std; int n,m; int a[size]; int ok(int x原创 2012-07-13 11:17:29 · 1237 阅读 · 0 评论 -
单调队列
POJ 2823: 也就是有一个数列a,要求你求数列b和c,b[i]是a[i]…a[i+w-1]中的最小值,c[i]是最大值。如果a是1,3,-1,-3,5,3,6,7,则b为-1,-3,-3,-3,3,3,c为3,3,5,5,6,7。 这个问题相当于一个数据流(数列a)在不断地到来,而数据是不断过期的,相当于我们只能保存有限的数据(sliding window中的数据,此题中就是窗口的宽度原创 2012-07-23 17:08:27 · 566 阅读 · 0 评论 -
快速排序
快速排序算法 百科名片 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。原创 2012-07-11 14:13:43 · 485 阅读 · 0 评论 -
hdu 1811Rank of Tetris (并查集+拓扑排序)
题意: n个队,m种描述(a>b 或 a=b 或 aa同时存在;②:存在环),信息是否不齐全(排名顺序有多种可能:某次入度为0的>1个。) 思路: 由于当存在冲突和信息不全时,返回冲突。所以先用并查集将‘=’两边的点“并为一点”,即只用对其中一点进行排序,将他们的根节点赋值为相同。若后面‘>' 或 'a=b与aa同时存在;若该冲突则用拓扑排序将比分顺序排列出来(当排序过程中出现入度为0的个数某次原创 2012-08-13 15:54:26 · 924 阅读 · 0 评论 -
hdu 1285 确定比赛名次
题意: 拓扑排序,按字典序输出。 #include #include #include #include using namespace std; int n,m , top; int vis[510][510]; int ans[510]; struct E { int v, next; }e[20010]; struct N { int head , dep ,原创 2012-08-13 10:52:13 · 672 阅读 · 0 评论