例题1.17 年龄排序 UVa11462

1.题目描述:点击打开链接

2.解题思路:本题是一道简单的排序题,相信很多人都会做。但是本题值得学习的地方并不在于排序的方法,而是在于如何尽可能的优化I/O时间。下面展示两种不同的输入输出方法的时间差异。

(方法一:利用scanf/printf输入输出)

//#pragma comment(linker, "/STACK:1024000000,1024000000")#include<iostream>#include<algorithm>#include<cassert>#include<string>#include<sstream>#include<set>#include<vector>#include<stack>#include<map>#include<queue>#include<deque>#include<cstdlib>#include<cstdio>#include<cstring>#include<cmath>#include<ctime>#include<cctype>#include<functional>using namespace std;#define me(s) memset(s,0,sizeof(s))typedef long long ll;typedef unsigned int uint;typedef unsigned long long ull;typedef pair <int, int> P;const int N=200+10;int a[N];int main(){int n;while(~scanf("%d",&n)&&n){memset(a,0,sizeof(a));int x;for(int i=0;i<n;i++){scanf("%d",&x);a[x]++;}int first=1;for(int i=1;i<=100;i++)for(int j=0;j<a[i];j++){if(!first)printf(" ");printf("%d",i);first=0;}puts("");}}

运行后,结果如下:

(方法二:编写专门的输入输出函数,逐字符的输入,输出)

//#pragma comment(linker, "/STACK:1024000000,1024000000")#include<iostream>#include<algorithm>#include<cassert>#include<string>#include<sstream>#include<set>#include<vector>#include<stack>#include<map>#include<queue>#include<deque>#include<cstdlib>#include<cstdio>#include<cstring>#include<cmath>#include<ctime>#include<cctype>#include<functional>using namespace std;#define me(s) memset(s,0,sizeof(s))typedef long long ll;typedef unsigned int uint;typedef unsigned long long ull;typedef pair <int, int> P;inline int readint(){char c=getchar();while(!isdigit(c))c=getchar();int x=0;while(isdigit(c)){x=x*10+c-'0';c=getchar();}return x;}int buf[10];inline void writeint(int i){int p=0;if(!i)p++;else while(i){buf[p++]=i%10;i/=10;}for(int j=p-1;j>=0;j–)putchar('0'+buf[j]);}int main(){int n,x,c[101];while(n=readint()){memset(c,0,sizeof(c));for(int i=0;i<n;i++)c[readint()]++;int first=1;for(int i=1;i<=100;i++)for(int j=0;j<c[i];j++){if(!first)printf(" ");first=0;writeint(i);}puts("");}}

运行后,结果如下:

的确和《训练指南》上说的一样,时间上优化了约2/3,可见优化效果还是很高的。顺便翻看了一下所有提交记录,能够小于100ms的几乎没有。虽然这是一个非常小的细节问题,但有备无患。

版权声明:本文为博主原创文章,未经博主允许不得转载。

,饶人不是痴汉,痴汉不会饶人。

例题1.17 年龄排序 UVa11462

相关文章:

你感兴趣的文章:

标签云: