标题:弱弱的问个问题
只看楼主
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
 问题点数:0 回复次数:17 
弱弱的问个问题


2003年提高组的一道题,谁给下具体代码,谢谢了。
附:
描述 Description
比赛的规则是将这些水王截止到2003年9月30日23时59分59秒这一刻所发的总贴数从大到小进行排序。每个水王当然都想取得尽量靠前的名次,所以他们竭尽全力,不择手段地进行灌水。
终于,激动人心的一刻到来了,2003年10月1日0时0分0秒,你作为裁判得到了每个水王的发贴数,现在,你的任务是公正地把这些水王按照发贴数从大到小进行排序。



输入格式 Input Format
输入的第一行是一个1到1000的整数N,表示总共有N位水王参加了争霸赛。
以下依次给出每位水王的描述,一位水王的描述占据两行,第一行为一个仅由字母和数字组成的长度不超过20的字符串,代表这个水王的ID,第二行一个高精度的整数(非负数),代表这个水王的发贴数。注意,这个整数的首位没有不必要的0。
考虑到IOIForum的数据库是有限的,所有水王发贴数的总长度(注意,是总长度而不是总和)不会超过10000。
除了子母、数字和必要的换行,输入中不会出现空格等字符。



输出格式 Output Format
依次输出按照发贴数从大到小排好序的各位水王的ID,每个ID占据单独的一行。不能有任何多余的字符。若几个ID的发贴数相同,则按照ID的字典顺序先后排列。





样例输入 Sample Input
6
lowai
1534534124561243453
zhouyuan
23453265344
Maolaoda
23442353452342
BuTaoCaiGuai
7568784573464
ArthurKing
97534892734723947
hyyylr
623893451



样例输出 Sample Output
lowai
ArthurKing
Maolaoda
BuTaoCaiGuai
zhouyuan
hyyylr



时间限制 Time Limitation
对于100%的数据时限=1s

[此贴子已经被作者于2006-12-3 19:39:23编辑过]

搜索更多相关主题的帖子: class 
2006-12-02 09:35
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
考虑到IOIForum的数据库是有限的,所有水王发贴数的总长度(注意,是总长度而不是总和)不会超过10000。
这句话有什么作用?


struct Big_number{
char str[20]; //ID
short int key[10000]; //存储发帖数
int len; //发帖数的长度
}

只要对key做比较,然后相同的再比较ID 就可以了.

倚天照海花无数,流水高山心自知。
2006-12-02 10:42
senyee
Rank: 1
等 级:新手上路
帖 子:422
专家分:0
注 册:2006-11-28
得分:0 
以下是引用nuciewth在2006-12-2 10:42:20的发言:
考虑到IOIForum的数据库是有限的,所有水王发贴数的总长度(注意,是总长度而不是总和)不会超过10000。
这句话有什么作用?

就应该考虑 所有 贴数 总和要小于10000


菜鸟~~请多指教~~
2006-12-02 10:46
Welton
Rank: 2
等 级:论坛游民
帖 子:65
专家分:38
注 册:2006-10-25
得分:0 
struct shui{
char id[20]; //记录id
char shumu[10000]; //记录每个数字中的每一位
}
只要数字是满足正常输入,则通过shumu的长度对struct排序(可以知道长度大的数字就大),然后对 相同长度的进行shumu的字典排序(毕竟数字大ASCII也大),然后再对id字典排序即可。

只是喜欢编程而已!
2006-12-02 11:04
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
第二行一个高精度的整数(非负数),代表这个水王的发贴数。
可是这上面的每一个水王发的帖子数已经远远超过10000了.

倚天照海花无数,流水高山心自知。
2006-12-02 11:05
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
得分:0 
代码贴出来看看
2006-12-02 11:44
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
得分:0 
这道题好烦,一下午都没做出来
2006-12-02 15:43
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
以下是引用yelo20053533在2006-12-2 11:44:29的发言:
代码贴出来看看

写了个,看可不可以.


#include<stdio.h>
#include<string.h>

typedef struct Big_number{
char Id[20];
short int num[100];
int len;
};

int bijiao(Big_number a,Big_number b)
{
if(a.len>b.len)
{
return 1;
}
if(a.len<b.len)
{
return -1;
}
for(int i=0;i<a.len;i++)
{
if(a.num[i]>b.num[i])
{
return 1;
}
if(a.num[i]<b.num[i])
{
return -1;
}
}
return strcmp(b.Id,a.Id);

}

void sort(Big_number a[],int n)
{
int i,j;
Big_number temp;
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(bijiao(a[j],a[j+1])==-1)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()
{
#ifdef ONLINE_JUDGE
freopen("water.txt","r",stdin);
#endif
Big_number data[1000];
int n;
char id[20],number[100];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s%s",id,number);
strcpy(data[i].Id,id);
data[i].len=strlen(number);
for(int j=0;j<data[i].len;j++)
{
data[i].num[j]=number[j]-'0';
}
}
sort(data,n);
for(int i=0;i<n;i++)
{
printf("%s\n",data[i].Id);
}
return 0;
}


倚天照海花无数,流水高山心自知。
2006-12-02 18:37
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
得分:0 

能解释一下吗?有些晕。。。。
这是C语言吗??

2006-12-03 00:59
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
得分:0 
而且好像编译失败
2006-12-03 01:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-106714-1-1.html




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

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