看到中文readme是一件非常亲切的事情!仔细看完此文档即可完成第一个用例: 1、整体指引: 1)使用一键式脚本编译、链接并打包压缩,如果编译失败请自行解决编译问题; 2)如果编译成功会在bin/目录下生成可执行二进制文件"cdn"; 3)使用如下格式调用并调试程序"./cdn /xxx/topo.txt /xxx/result.txt",其中topo.txt是输入文件(用例文件),result.txt是输出文件; ps 以上步骤用于本地调试编译是否有问题 4)将SDK中的源代码(deploy.cpp/deploy.h)替换或新增其他文件后压缩成zip或者tar.gz格式,即可上传答案。 上传答案的目录格式为: cdn.tar.gz/ (文件格式可以为tar.gz或者zip格式,文件名称可以自定义,但不要包含中文或空格) ├── bin/ ├── build/ ├── cdn/ ├── build.sh 不可修改或删除 └── readme.txt 2、sdk目录结构: SDK-gcc.zip/ ├── bin/ 可执行二进制文件目录,shell脚本在编译前删除此目录并重新创建此目录,故没有此目录不会影响脚本运行 ├── build/ 构建目录,shell脚本在编译前删除此目录并重新创建此目录,故没有此目录不会影响脚本运行 ├── cdn/ 代码目录 │ ├── lib/ lib头文件目录,此文件夹不可修改亦不可在其下新增文件 │ │ ├── lib_io.h 读写文件的头文件,不可修改 │ │ └── lib_time.h 打印时间的头文件,不可修改 │ ├── CMakeLists.txt cmake,不可修改 │ ├── cdn.cpp main函数源文件,不可修改 │ ├── io.cpp 提供读写文件等功能的源文件,不可修改 │ ├── deploy.cpp 你要写代码的源文件 │ └── deploy.h 你要写代码的头文件 ├── build.sh 编译、链接、打包批处理脚本,不可修改 └── readme.txt 你正在看的文件 -_-" 这不用介绍了吧 3、build.sh脚本说明: 执行此脚本可以一键编译、链接、打包。如果编译和链接正确,会在bin/下生成cdn二进制文件,可以本地自测验证。同时会在当前目录下生成cdn.tar.gz,可直接提交。 注意: 1)shell脚本会删除bin/和build/目录,以及这两个目录下的所有文件和目录。请不要在此保存你的任何文档; 2)如果想使用shell脚本一键功能,请保持SDK-gcc/目录下所有内容的完整,请不要修改任何目录名和文件名,并保持各目录和文件的位置关系不变。 4、手工操作说明:(非必须。如果选择使用shell脚本构建,可忽略本节内容) 1)在SDK-gcc/目录下创建build_private/目录,并在build_private/下编写makefile文件; 2)进入build_private/,执行make完成编译和链接; 3)将代码源文件打包压缩生成"cdn.tar.gz"。 注意: 1)不要在build/下保存你的makefile文件,一旦调用batch.sh将会删除你的makefile文件; 2)生成压缩包时,应确保将代码源文件置于压缩包的最外层,即打开压缩包无需进入任何目录即可看全部源文件,否则可能编译失败。 5、SDK代码说明: 我们已经提供了保姆式的服务,你只需要做: 1)实现deploy.cpp文件中的XXXX接口; 2)将需要输入的结果按照大赛题目要求的格式写入,通过write_result方法 3)如果计算结果无解,则直接输出NA。 SDK已经实现了读取文件、按要求格式写文件以及打印开始和结束时间的功能。 注意:读取文件功能是指,将链路信息文件按行读取到内存,其在内存中的存储格式仍是字符串格式。因为这些信息以什么格式存储涉及到算法设计,这样做是为了不禁锢你的思路。 6、重要提示: 复赛直接提交你修改和增加的代码源文件,在判题服务器端执行编译。因此需要特别注意: 1、必须基于本SDK开发,否则会编译不过; 2、在SDK的源文件中,只有deploy.cpp和deploy.h两个文件允许修改,不要修改其他文件,否则可能编译不通过; 3、如果需要新增文件,请一定要增加到与deploy.cpp文件同级目录。