在线OJ注意事项

article/2025/10/8 8:35:54

CSDN话题挑战赛第2期
参赛话题:学习笔记

一、OJ概念

online judge,简称OJ,是一个在线的判题系统。

用户可以在线提交多种程序代码(比如:C、C++、Java、Python等),系统对源代码进行编译和执行,并通过预先设计的测试用例来检验程序源代码的正确性。现广泛应用于世界各地高校学生程序设计的训练、作业的自动提交判断,以及各种竞赛(比如ACM)等。

二、OJ原理

用户提交的程序在OJ系统下执行时将受到比较严格的限制,包括运行时间限制内存使用限制安全限制等。

  • 用户程序执行的结果将被OJ系统捕捉并保存,然后再转交给一个裁判程序。
  • 该裁判程序或者比较用户程序的输出数据和标准输出样例的差别,或者检验用户程序的输出数据是否满足一定的逻辑条件。
  • 最后系统返回给用户一个状态:通过、答案错误、超时、超过输出限制、超内存、运行时错误、格式错误、或是无法编译,并返回程序使用的内存、运行时间等信息。

三、白板编程

问题:本地IDEA测试都是通过,一放到🐂客网上就不行?

关键点:

  1. IDEA使用的类是否导入?
    第一行 import java.util.*;

  2. 主类名称是否Main,你是否包含了main,核心的逻辑都在main中进行。
    有的题不需要主函数,只需要写一个方法就不用(比如JZ offer)的题目。

  3. 你的程序中的输入输出是否按照题目要求。
    要求空间复杂度为O(1),而新开数组 -> O(n)
    要求时间复杂度不能超过O(nlogn),而双层遍历O(n^2)

  4. 边界条件判定,输出链表的倒数第K个结点
    💪code : k默认合法,k不可能超过链表长度
    🐂客:对k没这个保证,k有可能超过链表长度

四、关于提交不成功

  • 代码语法问题,导致编译不通过
    a.多去刷题,将常犯的错误积累下来
    b.避免使用一些奇怪的函数,或者与平台相关的函数
    c.最好不用vs写算法,vs默认是Windows下的方式,一般的OJ编译器可能无法识别

  • 代码编译成功,提交不成功
    a.查看输出不成功的信息,输出格式不对还是无法通过某个测试用例
    b.对于无法通过的测试用例,一般都会将无法通过的用例显示出来,然后提供一个本该输出与程序输出,通过输出结果以及测试用例,检查代码那块有误。
    c.实在检查不出来,逐个测试用例处理

  • 自己编译器可以执行,但是OJ不可以通过
    在自己的编译器上可以跑通代码,但是在OJ上面不可以提交原因是什么?这种问题有很多种,比如传入的参数没有进行合法检查,例如:指针没有判空等等。这种问题大多是这些边界的问题。

五、java的oj输入注意点(引用)

接下来引用一下🐂客网小小大佬的文章:

oj的java输入hasNext和hasNextLine区别

比如一道oj 题目的输入是这样的:

在这里插入图片描述
采用java语言的话,有的老铁这样处理输入输出:

Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {int n = in.nextInt();//处理代码略
}

🐂客网的系统会提示错误,但是如果把hasNextLine改成hasNext或者hasNextInt的话,就会提示正确

while (in.hasNextInt()) {int n = in.nextInt();//处理代码略
}

这里要说明一下java中,hasNextLine和hasNext的区别。

先说结论:
采用has xxxx的话,后面也要用next xxxx。比如前面用hasNextLine,那么后面要用 nextLine 来处理输入。


说一下两个方法的区别:

  1. hasNext是检查是否有非空字符。
  2. hasNextLine是检查输入中是否还有linePattern。其中LinePattern其实是匹配一个正则表达式。
private static final String LINE_SEPARATOR_PATTERN ="\r\n|[\n\r\u2028\u2029\u0085]";
private static final String LINE_PATTERN = ".*("+LINE_SEPARATOR_PATTERN+")|.+$";

判题系统的所有测试用例都是存储在文件中,在上面的例子中,测试用例的文件为:

在这里插入图片描述
当处理完5后,没有非空字符了,hasNext返回了false,但是在linux系统中,5后面还有一个换行符\n,0X0A(有兴趣的老铁可以自己创建然后用二进制方式看一下文件)

所以 hasNextLine会返回true,但是其实后面并没有可以读的元素了,从而下面的in.nextInt会抛异常。

总结

🐂客网上的刷题体验和💪code相比差的很远

招聘中很多公司都用的前者这套系统进行笔试题

建议还是多刷OJ题~~~


http://chatgpt.dhexx.cn/article/I7sSIPXN.shtml

相关文章

在线OJ系统

在线OJ系统 项目开始之前需要准备的第三方库项目分析 两大模块在线编译模块整体思路编译模块 题目管理模块数据存储页面显示服务器 项目开始之前 需要准备的第三方库 httplib g版本必须得是4.9以上 ctemplate boost: yum install boost-devel.x86_64 jsoncpp&a…

分享一个OJ平台——浙江工商大学的OJ平台

1.引言 最近是有总喜欢讨论算法题,因为他们在准备考研复试,为什么我不准备呢?这是一个悲伤的故事,刚好自己也有面试遇到只能使用C和C的代码题,他们说这OJ平台相对简单一些,那些刷不来LeetCode可以试试这个&…

算法OJ题(1)

1.删除有序数组中的重复项 原题链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/ 思路:使用双指针算法可以使时间复杂度达到O(1). 具体过程:(以画图解释) 代码实现: int remove…

你想知道刷题的秘密吗?一篇博客让你明白什么是OJ题,如何刷OJ题,并深入浅出的带你刷遍顺序表的OJ题(小白必看)

目录 0.前言 1.什么是OJ 1.1 OJ简述 1.2 OJ的分类(尤其接口型OJ,带你剖析得明明白白) 1.3 接口型OJ的输入型参数 2. 剑指 Offer 56 - I. 数组中数字出现的次数 3. 88. 合并两个有序数组 4. 27.移除元素 5. 26. 删除有序数组中的重复…

Online Judge系统(简称OJ)

什么是OJ Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提交的程序在Online Judge系统下执行时将受到比…

OJ的介绍以及使用方法

OJ系统简介 Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C) 源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提…

C++-OJ

题目源自某高校C的OJ 本文字数过多,所有代码,都在这里 将做过的C OJ题目整理合并了一下,总共有一百多道题目,手动合并自然是不可能的 这个时候我们就可以使用shell脚本来取代这种机械化的重复劳动了,由于写成博客需要…

杭电OJ刷题指南(ACM)

除了杭电OJ,还有北大OJ,华科OJ等。 1.首先,打开百度,输入“杭电OJ”进行搜索 2.然后进入杭电OJ官网,进行注册 3.输入注册信息 4.接下来进入详细注册界面,将信息填写完整后点击Submit 5.接下来即可登录…

OJ系统

什么是OJ Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提交的程序在Online Judge系统下执行时将受到比…

最适合编程训练的三大OJ(从易到难)

按照学习的需求来说依次介绍,方便初学者使用: 1.Dotcpp网www.dotcpp.com 优点:全中文OJ,题目分类,有题解 这可能是初学者最好用的OJ甚至没有之一了 全中文的友好操作,充足的语法基础题、二级C语言题、…

各大OJ刷题平台汇总

前言 想成为一名高级工程师,算法还是要有的,至少在入门编程和进入公司之前都是必备的。刷题也可以很好的锻炼动手能力和逻辑思维,今天就给大家介绍一些知名的在线刷题平台,都是干货哦! 力扣(leetcode) 江湖人尽皆知的站点&#xf…

OJ的基本原理

OJ的简介:OJ(Online Judge),就是一个线上判断的接口,通常用于一些比赛中的程序判断,也就是将符合程序的结果放在OJ上,来进行程序验证,后来的大量的互联网公司也开始使用OJ来判断题目的正确性。 OJ的分类 …

【OJ】OJ的介绍和常用OJ推荐

目录 OJ的介绍编程刷题OJ集合计蒜客(主刷编程题 )牛客网(编程题和选择题都有)力扣(主要编程大题)领扣(主刷大题)Comet OJACMOREXidian Programming Contest Online Judge晴问浙江中医药OJZOJHDUOJ华东师范OJ洛谷codeforces 常见的测评结果 OJ的介绍 Online Judge 简…

OJ基础题库(1)

收录内容 P1005 最大公约数 p1008 质数还是合数 p1019 修改字符串 p1021 日历问题 #include<iostream> using namespace std;int max_yueshu(int x,int y){int temp;while(y!0){tempx%y;xy;ytemp;}return x; }int main(){int n,i;cin>>n; //输入对数int x,y,res;…

OJ算法分析题库(2)

P1476 加工生产调度 【实验】贪心算法之流水作业调度问题&#xff08;分析&#xff09; P1748 abcd0 P1750 求逆序对 P1746 求解查找最后一个数小于等于指定数的元素问题 P1477 部分背包问题&#xff08;分析&#xff09; 算法分析&#xff1a; 算法大致的思路就是通过四…

小程序生成网址链接,网址链接跳转小程序(附详细流程)

1.点击右上角工具下拉选择生成URL Scheme 2.填写好信息点击生成 3. 可以得出一个 weixin://dl/business/?tbAXXXXX 这样的链接&#xff0c;点击就可以调整到小程序拉&#xff0c;但是这种只能在微信打开哦。

小程序接入流量主、banner广告、激励广告

小程序接入广告 1.什么是微信小程序广告2.流量主开通流程3.微信小程序流量主开通以及添加广告步骤(1) 接入banner广告(2) 接入激励广告 1.什么是微信小程序广告 2.流量主开通流程 申请成为流量主后才能接入广告首先进入小程序后台&#xff0c;点击流量主&#xff0c;点击开通…

微信小程序实现登录注册页面

一、在小程序中引入iconfont 1.在官网搜索需要的图标 2.将图标添加至项目 3.打开我的项目 4.选择font class&#xff0c;点击下方的链接&#xff0c;打开生成的源码 5.在styles文件夹下新建iconfont.wxss&#xff0c;拷贝生成的源码到该文件中 二、编写登录注册页面 …

小程序获取用户的openid(详解)

小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识&#xff0c;快速建立小程序内的用户体系然而因为小程序中的openid不可以直接使用需要用code&#xff08;登录凭证&#xff09;去换取openid 获取openid的思路 获取openid首先需要调用小程序的login方法…

微信小程序使用腾讯地图完整流程

前言&#xff1a;开发小程序需要得到定位和位置的省市区文字信息&#xff0c;看了所有的文章都没有一个完整和像样的&#xff0c;全是copy来&#xff0c;copy去的文章 - _ -&#xff01;&#xff0c;一怒之下&#xff0c;开始了自己的踩坑之路 第一步&#xff1a;申请腾讯地图…