为了适应NOI比赛恶劣的操作环境,从上周起我就开始使用Ubuntu,编程用Vim,G++,DDD。不要向我推荐Emacs,我讨厌这东西。尽量减少调试,不要依赖于调试器,要靠自己认真细心,和静态查错。
毕竟Windows用惯了,使用Linux真的有许多不方便的地方,太多了。最显著的问题是输入法,Google拼音输入法为什么没有For Linux版?就连Chrome也没有Linux版,还好Firefox和Opera都是不错的。播放音频和视频支持的格式很少,Real player还不错。
没有批量更名的软件,对付大量的测试数据很麻烦。大小写区分,换行符不同,令人棘手。还好换行符的问题可以用dos2unix命令解决,批量更名就麻烦了,我承认我不会shell编程。
我用C++写了两个方便的工具,测试数据改名程序和测试数据答案文件生成程序。
测试数据改名程序用法 ./ren PROB#.IN prob#.in 1 10
把PROB1.IN … PROB10.IN 改成 prob1.in … prob10.in
代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include <iostream> #include <stdlib.h> using namespace std; int i,S,T; char Ti[100],To[100]; char *Fi,*Fo; void rm(char *t,char *p,int k) { for (;*t;t++) { if (*t!='#') { *p=*t; p++; } else { sprintf(p,"%d",k); while (*p) p++; } } *p=0; } int main(int argc,char **argv) { int suc; Fi=argv[1]; Fo=argv[2]; sscanf(argv[3],"%d",&S); sscanf(argv[4],"%d",&T); printf("\nData Renamer. Author: CmYkRgB123 \nFrom:%s\nTo:%s\nRange:[%d,%d] \n\n",Fi,Fo,S,T); for (i=S;i<=T;i++) { rm(Fi,Ti,i); rm(Fo,To,i); printf("Rename from %s to %s ...",Ti,To); suc=rename(Ti,To); if (suc==0) printf("Done.\n"); else printf("Failed.\n"); } printf("\n"); return 0; } |
测试数据答案文件生成程序用法 ./datacreator prob 1 10
根据prob1.in … prob10.in,调用./prob,生成prob1.ans … prob10.ans
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <iostream> #include <stdlib.h> using namespace std; int main(int argc,char **argv) { int i,S,T; char FI[100],FO[100],ti[100],to[100],Run[100]; char *name; name=argv[1]; sprintf(Run,"./%s",name); sscanf(argv[2],"%d",&S); sscanf(argv[3],"%d",&T); printf("\nData Creator. Author: CmYkRgB123 \nProblem Name:%s\nRange:[%d,%d] \n\n",name,S,T); for (i=S;i<=T;i++) { printf("Creating %s #%d ...",name,i); sprintf(FI,"%s%d.in",name,i); sprintf(ti,"%s.in",name); sprintf(to,"%s.out",name); sprintf(FO,"%s%d.ans",name,i); rename(FI,ti); system(Run); rename(ti,FI); rename(to,FO); printf(" Done.\n"); } printf("\n"); return 0; } |
不过也是有不少好处的,起码我不能玩游戏了,减少时间的浪费。

Recent Comments