算法竞赛:Online Judge 工作原理 常见报错分析 如何判断算法是否超时 知己知彼 方能骗分

news2024/10/2 5:49:06

一、在线评测系统运行原理及各种报错常见原因


电脑只是处理数据验证最后答案与期望答案是否相同,大部分的思考都由人来完成。
OJ一般有一组或者多组input文件与output文件,比如1.in 1.out 2.in 2.out等
OJ先运行你的程序,同时在后台开始计时,要求在1秒钟内通过一个测试点。
无法通过编译 CE
编译时开的内存过大 MLE
然后开始运行,
将所有input数据加入输入流中(数据量可能很大,多则几万组)
在这种大数据下除非你的程序是完美的,否则不可能通过。
将输出的内容和output文件比对,
不完全一样的 WA
数据一样,差换行和空格时是 PE
若在计时器计时结束前你的程序未能和output匹配完成(已完成部分都正确)是 TLE
输出流没有正常结束是 OLE
运行时调用了非法地址时是 RE

二、在正式比赛中input包括两部分


一部分是出题人这对这道题可能的算法出的边缘数据,运算量最大的数据,特殊数据,
另一部分是大数据,就是随机生成大量的合法数据,将数据通过标程给出结果。
这两部分数据结合可以以极高的准确率判定提交的程序是否正确

有关ac样例的问题
仅仅是通过了样例的程序远远不能AC,
样例只是帮助你理解题意而已,
通常样例无法检测出程序的错误。
甚至有些样例是有误导性质的,
样例不能测出程序是否超时,
不能解决特判的情况,通常是 0  1 这样的特殊数字

总结:

学生提交代码后,OJ系统会对代码进行编译,如果编译通过,那么会将各个测试点的数据作为输入,程序运行后读取数据并进行输出。系统会对程序的输出和正确答案进行比较,对输出结果进行判定。一个题目有多个测试点,会将程序运行数次。
  程序运行过程中也有可能会因为各种各样的问题而导致程序异常终止,系统会对这些问题进行判定。

三 、测试点的检测结果示例

 C++还会有个 开启O2 优化 的选项,-O2指的是编译器的优化级别(Optimization level),还会有-O1, -O2, -O3, -Os, -Ofast等。

  编译器的优化选项默认是-O0,即只进行必要的优化而不做其它的优化处理,一般是作为调试使用。

  开启-O2优化后,编译器会花费更多的时间来编译,以提高代码性能,甚至部分代码的计算结果在编译器就已经计算出来。开启优化会使得运行时间大大减少,开启和不开启的运行时间有时会有数倍的差距。(有些算法竞赛中是禁用优化O2)

  C++ 标准模板库(STL) 中的通用型模板,能解决大多数情况的问题,使用时可以大大减少代码量和测试工作量。
  STL本身性能也是很高的,手写的对应算法,性能上超过STL是很困难的。但STL如果不经过优化的话,性能会低很多,开启O2级别以上的优化后,STL性能就大大提高。    常用的STL模板一定熟练使用。

四、如何判断算法是否超时

一般评测机一秒最多可以运行 一亿次 即 10^8次。而一般编程竞赛都会将时间限制为 1000ms 即 1s。在这种情况下,C++ 代码的操作次数控制在 10e7~10e8为最佳。

1000ms意味着

O(n3)的算法,可以几百,一般题目给的数据范围为100。

O(n2)的算法,可以几千,一般不到万,经常出现的就是数据范围1000。

O(nlongn)或者O(n)的算法,最常见的数据范围就是为100000。

下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2183867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

废物利用,三百块电脑如何升级并安装双系统便携使用

文章目录 引言最初的配置开始改装更换内存升级硬盘2.5 英寸 sata 固态msata 加装 升级电池其他的升级娱乐大师跑分 双系统安装前提条件设置 Bios安装 win 10安装 Manjaro时间同步问题 屏幕问题黑屏难开 引言 最近浏览 b 站的二手笔记本信息,想要整个二手笔记本玩玩…

构建现代化社区医疗服务:SpringBoot平台

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理社区医院信息平台的相关信息成为必然。开发…

链表的实现(go语言)

摘要: 本文记录使用go语言对链表的实现。 链表的实现 节点结构 type Node struct {Data intNext *Node }新建节点 func NewNode(Data int) *Node {return &Node{Data: Data,Next: nil,} }尾部添加节点 // 尾部插入 func Append(head *Node, Data int) *Node…

信息安全工程师(28)机房安全分析与防护

前言 机房安全分析与防护是一个复杂而细致的过程,涉及到物理安全、环境控制、电力供应、数据安全、设备管理、人员管理以及紧急预案等多个方面。 一、机房安全分析 1. 物理安全威胁 非法入侵:未经授权的人员可能通过门窗、通风口等进入机房,…

【Java数据结构】 ArrayList 顺序表

一、什么是List 在集合框架中,List是一个接口,继承自Collection Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示: Iterable 也是一个接口,表示实现该接口的类是可以逐个元素…

Unity Asset Store的默认下载位置及更改下载路径的方法

修改Unity Asset Store的默认下载路径 Unity Asset Store默认下载位置 Unity Asset Store里下载资源,默认是下载到C盘里的,如果你不想做C盘战士的话,记得将下载的资源转移到其他盘。 Unity商城默认下载路径是C:\用户\用户名(一般…

电脑扬声器无法识别,没有声音处理

原因感觉就是前几天安装Realtek Audio Control驱动的时候,没有关闭360,导致的问题。 音量那里一直是 解决方法 开始菜单搜索“设备管理器” 在“声音、视频和游戏控制器”找到识别错的设备 右键“卸载设备” 右键扫描一下设备 此时一般就好了 …

数据结构-LRU缓存(C语言实现)

遇到困难,不必慌张,正是成长的时候,耐心一点! 目录 前言一、题目介绍二、实现过程2.1 实现原理2.2 实现思路2.2.1 双向链表2.2.2 散列表 2.3 代码实现2.3.1 结构定义2.3.2 双向链表操作实现2.3.3 实现散列表的操作2.3.4 内存释放代…

N32L40x基于串口的IAP升级升级速度2Mbps+上位机工具

1.软件升级流程 mcu开机上位机发送0xaa,0xaa,0x55,0x55,通知mcu进入升级状态,在收到该指令后,mcu擦除旧的APP程序,发送进入升级状态的指令,通知上位机进入升级状态擦除完成后进入升级状态,等待上位机发送升级包上位机开始发送数据包mcu接收数据包,并等待一个完成的数据包…

51单片机的智能家居【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温湿度传感器DS1302时钟模块光照传感器烟雾传感器蓝牙继电器按键、蜂鸣器、LED等模块构成。适用于智能家居监控烟雾、温湿度、光照和蓝牙控制等相似项目。 可实现基本功能: 1、LCD1602实时显示北京时间、室内温湿度…

【优选算法之哈希表】No.11--- 经典哈希表算法

文章目录 前言一、哈希表简介1.1 什么是哈希表1.2 哈希表的用途1.3 什么时候使用哈希表1.4 怎么用哈希表 二、哈希表示例2.1 两数之和2.2 判定是否互为字符重排2.3 存在重复元素2.4 存在重复元素 II2.5 字⺟异位词分组 前言 👧个人主页:小沈YO. &#x1…

重置linux后vscode无法再次使用ssh连接

如果你使用过vscode ssh远程连接了一个Linux系统,但该系统被重置了,并且关键配置没有改变。再次使用vscode连接时,vscode可能无法连接。 原因:vscode远程连接后会在C:\Users{{你的用户名}}.ssh下的known_hosts和known_hosts.old。…

C0008.Clion利用C++开发Qt界面,使用OpenCV时,配置OpenCV方法

安装OpenCV 配置环境 配置Clion中的CMakeLists.txt文件 # 设置OpenCV的安装路径 set(OpenCV_DIR "D:/OpenCv_Win/opencv/build/x64/vc16/lib")# 查找OpenCV包 find_package(OpenCV REQUIRED)下面添加的CMakeLists.txt文件中主要是添加了后面的${OpenCV_LIBS} # 链接…

Innodb磁盘结构

系统表空间 系统表空间的作用 存系统表中的数据存数据字典————保存系统变量和状态变量存变更缓冲区中未来得及落盘的数据 系统表空间文件位置 系统表可以对应磁盘上的多个表空间文件,默认情况下服务器在数据目录下创建一个名为ibdata1的文件 可以通过改变系…

解决方法:PDF文件打开之后不能打印?

打开PDF文件之后,发现文件不能打印?这是什么原因?首先我们需要先查看一下自己的打印机是否能够正常运行,如果打印机是正常的,我们再查看一下,文件中的打印功能按钮是否是灰色的状态。 如果PDF中的大多数功…

React 解释常见的 hooks: useState / useRef / useContext / useReducer

前言 如果对 re-render 概念还不清楚,建议先看 React & 理解 re-render 的作用、概念,并提供详细的例子解释 再回头看本文。 如果对 React 基础语法还不熟练,建议先看 React & JSX 日常用法与基本原则 再回头看本文。 useState useS…

虚幻引擎-设置UI自适应屏幕大小

在游戏中,如果想实现不同分辨率下,都可以支持当前的UI界面布局,都需要用到锚点功能。 ‌虚幻引擎中的UI锚点(Anchor)是指控件在屏幕或父物体上的固定点,用于确定控件的位置和布局。‌ 锚点的作用是确保UI元…

【LLM】手搓一个LLM Eval

文章目录 手搓一个LLM Eval项目的动机评测流程概述支持的数据集与评测指标详细的评测过程1. 生成式任务的F1评分1.1 模型推理1.2 结果评测 2. 思考 🚀 如何运行1. 运行模型推理2. 运行评测 支持的评测指标支持自定义评测学习总结 手搓一个LLM Eval TinyEval&#x…

B. Brightness Begins Codeforces Round 976 (Div. 2)

原题 B. Brightness Begins 解析 Hint 1 第 i 个灯泡最终状态与 n 的大小无关 Hint 2 第 i 个灯泡最终状态与 i 的约数数量的奇偶性相关 Solution 对任意灯泡 i , 它的最终状态由其约数数量的奇偶性相关, 如果 i 有偶数个约数, 那么会是亮的, 否则会是暗的. 换句话说, 如…

第四届高性能计算与通信工程国际学术会议(HPCCE 2024)

目录 大会简介 主办单位,承办单位 征稿主题 会议议程 参会方式 大会官网:www.hpcce.net 大会简介 第四届高性能计算与通信工程国际学术会议(HPCCE 2024)将于2024年11月22-24日在苏州召开。HPCCE 2024将围绕“高性能计算与通信工…