有些题目subtask
下文件数量很多,手动一个一个复制改名比较麻烦,写一个py
脚本就方便得多。
UOJ
下的subtask
格式具体可以看社区版的wiki
下面直接上py
代码
import os, shutil
subtasks = {}
cnt = {}
tot = 0
firstsuf = 'unknown'
pre = 'data'
in_suf, out_suf = 'in', 'out'
path=os.getcwd()
for root, dirs, files in os.walk('.'):
for name in files:
p=str(name).find('.')
suf=name[p:]
if root[-8:-1]=='Subtask' and (suf=='.in' or suf=='.out' or suf=='.ans'):
if (suf=='.ans'): out_suf = 'ans'
if firstsuf == 'unknown': firstsuf = suf
if not subtasks.has_key(root): subtasks[root]=0
if (not cnt.has_key(suf)): cnt[suf]=0
cnt[suf]+=1
if suf==firstsuf: subtasks[root]+=1
newname=pre+str(cnt[suf])+suf
shutil.copyfile(os.path.join(root,name), os.path.join(path, newname))
print(root, firstsuf, subtasks[root], name)
with open('.\\problem.conf', 'w') as f:
f.write('n_subtasks '+str(len(subtasks))+'\n')
i=1
for key,val in subtasks.items():
tot+=val
print(key, val, tot)
f.write('subtask_end_'+str(i)+' '+str(tot)+'\n')
f.write('subtask_score_'+str(i)+' 0\n')
i+=1
f.write('n_tests '+str(tot)+'\n')
f.write('input_pre '+pre+'\n')
f.write('output_pre '+pre+'\n')
f.write('input_suf '+in_suf+'\n')
f.write('output_suf '+out_suf+'\n')
f.write('time_limit 1\n')
f.write('memory_limit 128\n')
f.write('output_limit 64\n')
f.write('use_builtin_judger on\n')
f.write('use_builtin_checker ncmp')
原文:https://www.cnblogs.com/naiij/p/10697936.html