TZOJ帮助之出题

本文详述了如何在TZOJ上出题,包括确定题目、制造数据、提交标程以及管理员审核的全过程。重点讲解了如何利用C++的rand()函数生成随机数据,以及如何使用freopen重定向输入输出流来制造和验证数据文件。
摘要由CSDN通过智能技术生成

本博客原文地址:https://www.cnblogs.com/BobHuang/p/12749822.html
如果你已经能够控制自己的代码,且题目数300题以上成为高级用户,欢迎你为TZOJ贡献题目,与他人一起分享AC的快乐。题目通过管理员验证后,系统将赠送20分积分,积分可以用于课程平时分、兑换礼品等。

一、确定题目并撰写题面

首先你需要确定你的题目类型和解题方法,然后就可以书写题目描述了,鼠标滑到导航栏的练习,然后点击上传题目
在这里插入图片描述可以看到如下界面
在这里插入图片描述
点击红色框框里的上传题目,就可以添加题目了。绿色框为待定题目,需要等待系统管理员通过,黄色框为已上传题目列表,表示有人核验了题目后管理员对题目进行了通过。
点击上传题目后会出现如下界面。
在这里插入图片描述
首先是名称,请为你的题目想一个好名字。然后是时间限制(普通/Java)、时间限制(Java)、内存限制、数据输出限制,一般情况保持默认值不需要更改
如果你是算法类题目,时间限制(普通/Java)是你标程的3~7倍,如果你加入了读入优化等nb内容,直接7倍拉满。由于其他语言运行较慢,时间限制(Java)请开时间限制(普通/Java)的3倍,内存限制你自己可以计算下程序需要多少内存,如果要卡内存可以进行修改。如果你的输出比较多,可以修改数据输出限制。
然后依次填写描述、输入、输出、样例输入、样例输出,请保证题目没有歧义,多组数据请在输入里注明。如果需要提示请在提示里填写。也可以限定语言进行代码填空,对学习函数和类等有帮助,教师会用到这个功能。

二、制造数据及提交标程

数据是一个题目的核心,一个强大的数据才代表这个题目是完整的。我们一般会特殊构造几组,并随机多组。在这里主要介绍下使用C++语言来制造数据。
C++ 库有一个名为 rand() 的函数,每次调用该函数都将返回一个非负整数。

#include <bits/stdc++.h>
using namespace std;

int main()
{
   
	//循环随机100次
	for(int i=0;i<100;i++)
	{
   
		int x=rand();
		cout<<x<<"\n";
	}
	return 0;
}

rand函数返回的数字其实是伪随机数。它们虽然具有随机数的表现和属性,但实际上并不是随机的。它们实际上是用算法生成的。各种各样的伪随机数算法可以了解一下。
我们运行以上代码两次,我们会发现随机到的数字完全相同,该算法需要一个起始值,称为随机数种子,以生成数字。如果没有给出一个种子,那么它每次运行时产生相同的数字流。
我们一般会以时间作为随机数种子time(NULL),其实他是从系统获取的是从1970年1月1日00:00:00到现在为止经过了多少秒,也就是时间戳。时间每分每秒都在流逝,这个已经基本可以满足我们的要求了。在 C++ 中,给定随机数种子是通过调用 srand 函数完成的。所以以上代码可以写为,你就会发现数字不同了。随机也是可以AC题目的,2018上海大都会赛A等你AC

#include <bits/stdc++.h>
using namespace std;

int main()
{
   
	srand(time(NULL));
	//循环随机100次
	for(int i=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值