Round 1C 2010,C輪的測試題了。本以為難度會加大,不過第一題還是比較簡單的。
Rope Intranet,統計繩子的交點個數。演算法很直接,遍曆所有的繩子,累計它與剩下的繩子的交點的個數。
代碼如下:
#!/usr/bin/python#encoding:UTF-8#Filename:RopeIntranet.pyimport sysdef compareWire(a,b): if (a[0]<b[0] and a[1]>b[1]) or (a[0]>b[0] and a[1]<b[1]): return 1 else: return 0inname = "input.txt"outname = "output.txt"if len(sys.argv)>1: inname = sys.argv[1] outname = inname.rstrip(".in") outname = outname + ".out"fin = open(inname,"r")fout = open(outname,"w")testCaseNum = int(fin.readline().rstrip("\n"))for caseNum in range(testCaseNum): wireNum = int(fin.readline().rstrip("\n")) wireData = [] for wireCnt in range(wireNum): wire = [int(val) for val in fin.readline().rstrip("\n").split()] wireData.append(wire) crossCnt = 0 for i in range(wireNum): for j in range(i+1,wireNum): crossCnt = crossCnt + compareWire(wireData[i],wireData[j]) answer = "Case #%d: %d\n" %(caseNum+1,crossCnt) fout.write(answer)fin.close()fout.close()
測試通過。不過在測試large case的時候時間有點長,有更快的演算法嗎?