• 关于OJ系列文章的说明


    什么是UVa OJ?

    UVa OJ(英文)是西班牙巴利亚多利德大学提供的一套在线评判系统(OJ)。它提供多达近3000道ACM算法题,而且还在增加。任何人在免费注册后都可以浏览题目和提交自己的解答程序。服务器会自动编译你提交的代码,用特殊的数据(不是题目中的Test Case)进行测试,并立即做出评判。如果程序在限定条件内运行出符合要求的结果,系统会给出运行时间和下列结果:

    • 正确(Accepted, AC)
    • 答案错误(Wrong Answer, WA)
    • 用时超过限制(Time Limit Exceed, TLE)
    • 输出超过限制(Output Limit Exceed, OLE)
    • 内存超过限制(Memory Limit Exceed, MLE)
    • 运行时错误(Runtime Error, RE),一般是数组越界访问引起的
    • 输出格式错误(Presentation Error, PE)
    • 编译出错(Compile Error, CE)

    UVa OJ支持的编程语言包括C、C++、Pascal和Java。现在全球很多大学都提供OJ系统,中国也有不少,比如北大的PKU OJ,浙大的ZOJ,同济的TOJ等等。但综合比较起来,个人觉得还是UVa的系统更加完善,题目也更全面。

    在OJ上做题需要什么基础?

    OJ是为职业程序员准备的,对语言基本功要求较高。各类常用的数据结构和算法也要求有一定的使用经验。UVa OJ的题目难度差别悬殊,最大的麻烦就是所有题目并没有按难度排序,因此至少具备很快确定算法难度的能力,才能选择适合自己的题目。个人推荐使用C++做题,一是可以使用非常便利的STL,二是在网上有大量的相关资源,其它语言的解答比较少。

    还有哪些需要注意的地方?

    OJ的评判非常严格,做题时一定要仔细审题,重点看“Input”和“Output”段落的要求。虽然OJ会用特别的输入数据进行测试,但绝对不会超过题目中给定的限制。而题目中没有特别的说明的地方则是什么情况都可能出现,这一点要格外小心。输出时一个空格也不能多,如果要求的结果是用空格分隔的一行数字,那么在行尾多了一个空格就很可能得到WA或着PE。

    如果你获得了一个题的Accepted,在浏览界面那道题目的底色就会变绿,当你的账号里满版飘绿时一定会非常有成就感。如果你被卡在一道题始终得不到AC,请按顺序尝试下面几个方法:

    1. 重新认真的读题,检查是否按题目的要求处理输入数据,是否按要求的格式输出,尤其注意末尾是否有多余的空格
    2. 仔细检查你的代码是否处理了题目没有限定的“异常”输入数据,最好能自己模拟一些可能的异常数据来进行测试。
    3. 另写一段代码生成1000000组随机数据对你的算法进行测试,并用另外一段代码进行验证。
    4. 访问UVa OJ的论坛(英文)搜索类似问题,一般都可以找到更多的测试数据。也可以发贴寻求帮助。
    5. 在Google上搜索题目名称,一般都可以搜到能AC的代码。把它加到你的程序中,然后用大量数据测试你的代码和正确代码在运行结果上的异同。
    6. 考虑你是否使用了“非主流”的算法或思路。虽然OJ不会检查你的代码,但有时对某些异常情况的不同处理,会导致错误的结果。
    7. 如果以上方法都不能解决你的问题,欢迎给我发Email(地址见侧栏),我乐意和你一起研究这个难题!(我已经发布过的题目则请仔细阅读文章,谢谢!)

    我的计划

    其实我很早就做过OJ题目了,但非常惭愧的是我一直没有勇气和毅力坚持下来,希望从现在起开始补救还不算太晚。这一系列文章将记录我进步的历程,每篇的格式都固定,包括原题目及翻译、思路分析和我的解答代码。发布一篇题目需要花大量的时间,有些题目可能并不完善(比如还没有翻译),敬请见谅。我计划每完成50题就休息一段时间,把前面发的文章整理一遍,也算是给自己做一次复习。

    我在写每篇文章时都会力求以最简明的方式把问题讲清楚,因此可能会比较罗嗦。代码的注释也会非常详细,让就算没有C++/STL语言基础的人也能一眼看懂。但我还是希望您先不要看分析和代码,自己做一下这些题目。直接把代码粘到UVa OJ上是没有任何意义的,事实上这一步我早就替您做过了。能看懂并不代表能写出来,手熟才是最重要,切莫眼高手低。只有当您实在没有思路或着一直卡到WA,分析和代码可以为您提供一些参考。



    知识共享许可协议 作者:王雨濛;新浪微博:@吉祥村码农;来源:《程序控》博客 -- http://www.cnblogs.com/devymex/
    此文章版权归作者所有(有特别声明的除外),转载必须注明作者及来源。您不能用于商业目的也不能修改原文内容。
  • 相关阅读:
    SQLyog远程连接Linux服务器错误2003解决
    Linux/UNIX系统编程手册 练习3.8
    概括
    Linux 命令
    句柄类
    带有C风格的 CLib库
    Linux 命令
    C++ 编程思想 第三章 3-2
    一.创建型模式 Prototype 模式
    一.创建型模式 Builder
  • 原文地址:https://www.cnblogs.com/devymex/p/1794537.html
Copyright © 2020-2023  润新知