上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 34 下一页
摘要: 原文链接为http://hxraid.iteye.com/blog/647759从《基于比较的排序结构总结 》中我们知道:全依赖“比较”操作的排序算法时间复杂度的一个下界O(N*logN)。但确实存在更快的算法。这些算法并不是不用“比较”操作,也不是想办法将比较操作的次数减少到 logN。而是利用对待排数据的某些限定性假设 ,来避免绝大多数的“比较”操作。桶排序就是这样的原理。桶排序的基本思想 假设有一组长度为N的待排关键字序列K[1....n]。首先将这个序列划分成M个的子区间(桶) 。然后基于某种映射函数 ,将待排序列的关键字k映射到第i个桶中(即桶数组B的下标 i) ,那么该关键字... 阅读全文
posted @ 2011-09-06 22:36 枕边梦 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 其实,说得简单明了的一点,就是求俩个分数的最小公倍数;方法:先将俩个分数转换成最简形式,在求出俩个分母的最大公约数最为最小公倍数的分母,求出俩个分子的最小公倍数做为最小公倍数的分子即可;当我把我的代码改得面目全非的时候,我才发现了我WA的原因,求最小公倍数的时候int lcd(int u,int v,int h){ return(u*v/h);//这步溢出了}应该改为int lcd(int u,int v,int h){ return(u/h*v);}#include<iostream>using namespace std;int n;int hcf(int a,int b){ 阅读全文
posted @ 2011-09-06 19:54 枕边梦 阅读(328) 评论(0) 推荐(1) 编辑
摘要: 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1568我的天呐,写了那么久的代码,拼命地想省内存,可是还是没用呀,那么大一个数,数组至少就要那么大了呀,看看我那MLE的代码吧,原因是我用了递推公式,下面一个是直接用公式计算每一个的MLE的代码#include<iostream>#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>using namespace std;int sum[2][200];int 阅读全文
posted @ 2011-09-06 17:51 枕边梦 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 先看下资料,数学公式来的资料转自:http://jackiesteed.blog.163.com/blog/static/165506750201051552930758/约瑟夫环问题是一道经典的数据结构题目问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。一般我们采用一个循环队列来模拟约瑟夫环的求解过程,但是如果n比较大的时候,采用模拟的方式求解,需要大量的时间来模拟退出的过程,而且由于需要占用大量的内存空间来模拟队列中的n个人,并不是一个很好的解法。在大部分情况下,我们仅仅需要知道最后那个人的编号,而不是要来模拟一个这样的 阅读全文
posted @ 2011-09-06 15:21 枕边梦 阅读(579) 评论(0) 推荐(0) 编辑
摘要: 经典的统计题目题意:给出N个人的坐标,求出在以r为边的正方形中最多的人数分析:因为正方形的位置并未固定,而要满足覆盖最多的点,则以某一个点的y坐标作为下边界一定有最优解,所有:首先对N个人的纵坐标进行排序,枚举所有Y坐标(正方形下边界),找出满足以当前y坐标为下边界的正方形内的点,再枚举满足条件的点X坐标,计算以r为边最多可覆盖的点,总复杂度O(n^2)代码:#include<iostream>#include<algorithm>using namespace std;struct node{ int x,y;}p[1001];int n,ans,r,xx[1001] 阅读全文
posted @ 2011-09-06 12:55 枕边梦 阅读(383) 评论(1) 推荐(0) 编辑
摘要: 公式:p+q-GCD(q,p)具体分析:http://www.shuxueweb.com/shuxuebolan/qiuti/shuxuebolan_9112.html#include<iostream>using namespace std;int hcf(int a,int b){ int r=0; while(b!=0) { r=a%b; a=b; b=r; } return(a);} int main(){ int q,p; while(cin>>q>>p) { cout<<q+p-hcf(q,p... 阅读全文
posted @ 2011-09-05 20:33 枕边梦 阅读(202) 评论(0) 推荐(0) 编辑
摘要: (1)纯循环小数(仅指整数部分为0的)化成分数时,分数的分母由9组成,9的个数等于一个循环节的位数,分子是由一个循环节的各位数字组成。如:0,234234234....=234/9990.111111=1/9 (2)非纯循环小数化成分数时,分母由9和0组成,其中9的个数等于一个循环节的位数,0的个数等于非循环部分的位数。分子是从小数点后的第一位到第一个循环节的末位组成的数减去非循环部分。如:0,76345345345。。。。=(76345-76)/99900 0.0243434343.........=(243-2)/9900 0.811111。。。。=(81-8)/90=73/90#incl 阅读全文
posted @ 2011-09-05 19:59 枕边梦 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 题意:小孩子玩积木堆房子的情景:每组测试数据第一行给出n,代表接下来有n块砖;接下来n行,每行给出砖的长,宽,高,属性(a,b,c,d);属性d:d=0:该砖的长度和宽度(a,b)要比垫在他下面的砖的长,广大或者相等;就是长>=长,宽>=宽d=1:改砖的宽度和长度要比下面的砖的长度大或者相等,同时,该砖的宽度值和面积值要比下面的砖的面积值大;即长>=长,宽>=宽,面积>面积。也就是长>=长&&宽>=宽&&(长>长||宽>宽)d=2:该砖的长度和宽度(a,b)要比垫在他下面的砖的长,广大(严格大于);长> 阅读全文
posted @ 2011-09-05 18:35 枕边梦 阅读(401) 评论(0) 推荐(0) 编辑
摘要: The Frog's Games 二分枚举答案View Code #include<iostream>#include<algorithm>using namespace std;int L,n,m;int a[500002];int cmp(const void *c ,const void *b ) { return *(int *)c - *(int *)b; } int main(){ while(scanf("%d %d %d",&L,&n,&m)==3) { int maxn=0; for(int i=1; 阅读全文
posted @ 2011-09-04 22:35 枕边梦 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 题目大意:向一个容量为V的洞中搬物品 每件物品有一个停放体积 可一个移动体积 问能否放下这些物品解题思路:对这些物品进行排序 按照顺序依次进入洞中 排序要尽可能使得所有的东西都能进入洞中这是一个贪心的问题 停放体积 移动体积 第一件物品 a1 b1 第二件物品 a2 b2假设这两件物品的移动体积都不大于洞的体积V那么将单独比较两个物品的时候会发现 a1+b2为先放第一件物品 后放第二件物品的最大瞬时体积 a2+b1为先放第二件... 阅读全文
posted @ 2011-09-04 16:31 枕边梦 阅读(208) 评论(0) 推荐(0) 编辑
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 34 下一页