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的几乎没有。虽然这是一个非常小的细节问题,但有备无患。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-06 05:16:37