| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2370 人关注过本帖
标题:[求助]ACM题,合并两个集合的元素的代码
只看楼主 加入收藏
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
以下是引用cwande在2007-8-7 16:00:04的发言:
偶是说比如maxnum=2^31-1................

262143KB
不过可以将其分为5部分,将活动的放于内存中,不活动的暂存于文件,由于这种算法很快,所以文件存储同样可以通过


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-08-07 16:59
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 

用BST,排序去重一起解决。

2007-08-07 17:01
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
不如用map偷个懒
map<int,int> mp;
if(!mp[i]) 加入,mp[i]++;
输出用叠代器

2007-08-07 19:42
cwande
Rank: 2
等 级:新手上路
威 望:3
帖 子:333
专家分:0
注 册:2006-8-18
收藏
得分:0 
以下是引用卧龙孔明在2007-8-7 16:59:35的发言:

262143KB
不过可以将其分为5部分,将活动的放于内存中,不活动的暂存于文件,由于这种算法很快,所以文件存储同样可以通过

时间复杂度是多少?O(maxnum)?还是更小??


汗,都懒得写代码了.......... cheat了一个威望,哈.....
2007-08-07 19:47
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
以下是引用cwande在2007-8-7 19:47:05的发言:

时间复杂度是多少?O(maxnum)?还是更小??

一次方


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-08-07 20:19
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
回复:(卧龙孔明)以下是引用cwande在2007-8-7 19:47...
0 < n,m <= 10000
你所谓的一次方,不妨说是2^31-1,而nlogn在最坏情况下,我用n+m=20000来代入,也只有20000*log20000=285754<2^19
而且作为一道ACM题目,ONLINE JUDGE不可能让你读写文件。
2007-08-07 21:44
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
作为一道ACM题目,ONLINE JUDGE不可能让你读写文件 这个我同意

不过请注意,我的算法仅仅是最简单的赋值,而排序需要比较,交换等等许多操作,不要只看复杂度,可以分析一下真正程序执行时间:
sum{执行的语句1*语句1时间加权+....执行的语句n*语句n时间加权}
通过这个可以看出,我的程序在速度上确实占优势

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-08-07 22:12
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
回复:(卧龙孔明)作为一道ACM题目,ONLINE JUDGE不可...
但是你的程序不能在内存里实现,2^31-1的数组是开不出来的,如果你要读写文件,就不要谈效率了,文件读写是最耗时的,我想这点你应该知道。你综合考虑的时候怎么不把这个算上。
2007-08-07 22:31
liulanghan
Rank: 1
等 级:禁止访问
帖 子:104
专家分:0
注 册:2007-5-5
收藏
得分:0 

谢谢大家的热心帮助,因为后来我自己解决了,就没看自己的帖子了
我最后的代码 通过了
代码如下:

Memory:196K Time:2078MS
Language:GCC Result:Accepted

Source
#include <stdio.h>

void SortBullbe(int *a ,int n)
{
int i ,j ,k ,temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]>a[j])
{
k=j;
}
}
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}

main()
{
int i ,j ,k ,n ,m;
int a[20005],b[20005];
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i < n;i++)
{
scanf("%d",&a[i]);
}
for(;i < m+n;i++)
{
scanf("%d",&a[i]);
}
SortBullbe(a ,m+n) ;
b[0]=a[0];
j=0 ;
for(i=1;i < m+n;i++)
{
if(b[j]!=a[i])
b[++j]=a[i];
}
for(k=0;k < j;k++)
{
printf("%d ",b[k]);
}
printf("%d\n" ,b[j]);
}
}


2007-08-07 22:31
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
回复:(liulanghan)谢谢大家的热心帮助,因为后来我自...
楼主把online judge的地址贴一下,我去做做看。
2007-08-07 22:35
快速回复:[求助]ACM题,合并两个集合的元素的代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018458 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved