Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

块状链表终于过了,调试得想吐,写了个生成随机数据的脚本, 对WA有很大帮助

Posted by lddlinan at 2020-04-18 20:17:06 on Problem 3580
# gen.py
from  random import randint

acts = ["ADD", "REVERSE", "REVOLVE", "INSERT", "DELETE", "MIN"]
for i in range(100):
    filein = open("%03d" % i, "w");
    fileout = open("%03d.a" % i, "w");

    n = randint(0, 10000)
    filein.write(str(n)+'\n')
    vs = [randint(-10000, 10000) for _ in range(n)]
    filein.write("\n".join([str(v) for v in vs])+"\n")
    m = randint(1000, 2000)
    filein.write(str(m)+'\n')
    r = []
    for _ in range(m):
        a = randint(0, 5)
        if len(vs)==0: a=3
        if a==0:
            x = randint(1, len(vs))
            y = randint(x, len(vs))
            d = randint(-1000, 1000)
            filein.write("%s %d %d %d\n" % (acts[a], x, y, d))
            k=x-1;
            while k<y:
                vs[k] += d
                k+=1
        elif a==1:
            x = randint(1, len(vs))
            y = randint(x, len(vs))
            filein.write("%s %d %d\n" % (acts[a], x, y))
            x-=1
            y-=1
            while x<=y:
                vs[x], vs[y] = vs[y], vs[x]
                x+=1
                y-=1
        elif a==2:
            x = randint(1, len(vs))
            y = randint(x, len(vs))
            t = randint(-1000, 1000)
            filein.write("%s %d %d %d\n" % (acts[a], x, y, t))
            n = y-x+1
            t %=n
            if t<0: t+=n
            x-=1
            vs[x:x+t], vs[x+t:y] = vs[y-t:y], vs[x:y-t]
        elif a==3:
            x = randint(0, len(vs))
            v = randint(-1000, 1000)
            filein.write("%s %d %d\n" % (acts[a], x, v))
            vs.insert(x, v)
        elif a==4:
            x = randint(1, len(vs))
            filein.write("%s %d\n" % (acts[a], x))
            del vs[x-1]
        else:
            x = randint(1, len(vs))
            y = randint(x, len(vs))
            filein.write("%s %d %d\n" % (acts[a], x, y))
            m = vs[x-1]
            while x<y:
                if m>vs[x]: m=vs[x]
                x+=1
            r.append(str(m))
    fileout.write("\n".join(r)+"\n");
    filein.close()
    fileout.close()

###############################
# time for i in {000..099}; do ./a.out < ${i} > o1; git diff ${i}.a o1; echo "---${i}---"; done

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator