完整题面

P2262 [HNOI2004] FTP服务器

connect命令,格式:[name]+空格+connect+参数A,例:tsinghua connect 1 表示在名叫name的用户请求以A身份连接到服务器上。如果当前的最大使用用户还没达到maxUserNumber,并且该用户未连接到服务器,则连接成功,服务器反馈回一个相关信息“success”。否则反馈信息为“unsuccess”。一旦连接成功,用户其所处的位置userPosition为服务器的根目录。A=1表示上传用户,A=2下载表示用户,A=3表示匿名用户。 quit命令,格式:[name]+空格+quit,例tsinghua quit 表示名叫name的用户断开与服务器的连接。如果用户未连接反馈“unsuccess”,否则反馈“success”(注意用户在任何状态下都可以断开与服务器的连接)。 cd命令,格式:[name]+空格+cd+空格+[floderName/文件夹名称],例:THU cd FD 表示名叫name的用户希望从当前所处的文件夹进入该文件夹中的一个名叫floderName的文件夹。如果名叫floderName的文件夹存在并且处于normal状态,则改变用户当前所处位置userPosition,反馈相关信息“success”,如果该文件夹不存在或该用户没有成功连接,则反馈信息为“unsuccess”。 cd..命令,格式:[name]+空格+cd..,例:9# cd.. 表示名叫name的用户希望从当前所处的文件夹返回到他的上一级文件夹。如果用户处于根目录或者用户未连接,则命令执行失败返回“unsuccess”,否则返回success,并且改变用户所处位置userPosition。 download命令,格式:[name]+空格+download+空格+[name1],例:A download 1.txt 表示名叫name的用户希望从当前所处文件夹下载名为name1的文件或者文件夹。如果用户未连接,用户没有下载权限,名为name1的文件/文件夹不存在,或者该文件/文件夹处于uploading状态时,反馈信息“unsuccess”,否则返回“success”并且开始下载该文件/文件夹。(一旦一个下载命令开始执行,那么执行该命令的用户所下载的是下载命令执行的那一时刻的那一个文件/文件夹,也就是说如果一个用户正在下在某个文件夹,在下载过程中,有另外一用户在这个文件夹里面上传文件,那么原下载用户是不可能下载到这个新上传的文件的)。 upload命令,格式:[name]+空格+upload+空格+[name1]+空格+[size],例:A upload B 1 表示名叫name的用户希望在当前所处的文件夹上传一个名叫name1的大小为size的文件/文件夹。注意:用户通过upload命令上传文件夹只能为空文件夹,当size=0表示上传文件夹,size>0表示上传文件。如果当前目录已经存在了同名的文件/文件夹,用户未成功连接或者用户没有上传权限,反馈信息“success”,否则反馈“unsuccess”,并且开始上传文件/文件夹。(如果一个用户想要上传一个非空文件夹,是很容易通过一系列upload以及cd命令实现的)。 除上传文件和下载文件/文件夹命令需要耗时外,其他的命令都不需要执行时间。 你的任务是模拟一个FTP服务器在某一时间段内的运行过程。
by SuperJvRuo @ 2018-05-22 13:55:50


Oh!感觉好复杂鸭qwq
by Eason_AC @ 2019-11-12 20:04:51


不是这好多数据范围都没给出来呀……
by Eason_AC @ 2019-11-12 20:33:51


@[小粉兔](/user/10703)
by pzc2004 @ 2020-11-16 14:34:52


|