QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#265892#5110. SplitstreamjuampiRE 34ms10976kbPython31.3kb2023-11-25 22:09:052023-11-25 22:09:05

Judging History

你现在查看的是最新测评结果

  • [2023-11-25 22:09:05]
  • 评测
  • 测评结果:RE
  • 用时:34ms
  • 内存:10976kb
  • [2023-11-25 22:09:05]
  • 提交

answer

import sys

M, N, Q = map(int, input().split())
nd = [[] for _ in range(1)]
mx = 0
for _ in range(1, N+1):
  ch, x, y, z = input().split()
  x, y, z = int(x), int(y), int(z)
  mx = max(mx, x, y, z)
  if ch == 'S':
      nd.append([x, 0, y, z])
  else:
      nd.append([x, y, z, 0])

oin = [0] * (mx+1)
oout = [0] * (mx+1)
for i in range(1, N+1):
  oin[nd[i][0]] = oin[nd[i][1]] = oout[nd[i][2]] = oout[nd[i][3]] = i

osz = [-1] * (mx+1)
osz[0] = 0
def rec(x, sz):
  osz[x] = sz
  if oin[x] == 0:
      return
  v = nd[oin[x]]
  if osz[v[0]] == -1 or osz[v[1]] == -1:
      return
  if v[1]:
      rec(v[2], osz[v[0]]+osz[v[1]])
  else:
      rec(v[2], (osz[v[0]]+1)//2)
      rec(v[3], osz[v[0]]//2)

rec(1, M)
for i in range(2, mx+1):
  if not oout[i]:
      rec(i, 0)

for _ in range(Q):
  x, k = map(int, sys.stdin.readline().split())
  if k > osz[x]:
      print("none")
      continue
  while x != 1:
      v = nd[oout[x]]
      if v[1]:
          sz = min(osz[v[0]], osz[v[1]])
          if k <= 2 * sz:
              x = v[not k % 2]
              k = (k+1) // 2
          else:
              x = v[osz[v[1]] > osz[v[0]]]
              k -= sz
      else:
          k = 2 * k - (v[2] == x)
          x = v[0]
  print(k)

详细

Test #1:

score: 100
Accepted
time: 10ms
memory: 8104kb

input:

5 8 26
M 8 9 13
S 2 4 5
S 1 2 3
M 6 5 8
S 4 9 10
S 10 14 15
S 3 6 7
S 7 11 12
2 3
2 4
3 2
3 3
4 2
4 3
5 1
5 2
6 1
6 2
7 1
7 2
8 2
8 3
9 1
9 2
10 1
10 2
11 1
11 2
12 1
13 3
13 4
14 1
14 2
15 1

output:

5
none
4
none
5
none
3
none
2
none
4
none
3
none
1
none
5
none
4
none
none
3
none
5
none
none

result:

ok 26 lines

Test #2:

score: 0
Accepted
time: 34ms
memory: 10976kb

input:

1000000000 8191 1000
S 1 2 3
S 2 4 5
S 3 6 7
S 4 8 9
S 5 10 11
S 6 12 13
S 7 14 15
S 8 16 17
S 9 18 19
S 10 20 21
S 11 22 23
S 12 24 25
S 13 26 27
S 14 28 29
S 15 30 31
S 16 32 33
S 17 34 35
S 18 36 37
S 19 38 39
S 20 40 41
S 21 42 43
S 22 44 45
S 23 46 47
S 24 48 49
S 25 50 51
S 26 52 53
S 27 54 55...

output:

1
3
999999999
499999999
333333331
999999997
499999997
333333329
2
4
1000000000
500000000
333333332
999999998
499999998
333333330
1
5
999999997
499999997
333333329
999999993
499999993
333333325
3
7
999999999
499999999
333333331
999999995
499999995
333333327
2
6
999999998
499999998
333333330
999999994...

result:

ok 1000 lines

Test #3:

score: 0
Accepted
time: 34ms
memory: 10804kb

input:

1000000000 8190 1000
S 1 2 3
M 8193 8194 8192
S 2 4 5
M 8195 8196 8193
S 3 6 7
M 8197 8198 8194
S 4 8 9
M 8199 8200 8195
S 5 10 11
M 8201 8202 8196
S 6 12 13
M 8203 8204 8197
S 7 14 15
M 8205 8206 8198
S 8 16 17
M 8207 8208 8199
S 9 18 19
M 8209 8210 8200
S 10 20 21
M 8211 8212 8201
S 11 22 23
M 821...

output:

1
2
1000000000
500000000
333333333
999999999
499999999
333333332
1
1
3
3
999999999
999999999
499999999
499999999
333333331
333333331
999999997
999999997
499999997
499999997
333333329
333333329
2
2
4
4
1000000000
1000000000
500000000
500000000
333333332
333333332
999999998
999999998
499999998
4999999...

result:

ok 1000 lines

Test #4:

score: -100
Dangerous Syscalls

input:

1000000000 10000 1000
S 1 2 3
S 2 4 5
S 4 6 7
S 6 8 9
S 8 10 11
S 10 12 13
S 12 14 15
S 14 16 17
S 16 18 19
S 18 20 21
S 20 22 23
S 22 24 25
S 24 26 27
S 26 28 29
S 28 30 31
S 30 32 33
S 32 34 35
S 34 36 37
S 36 38 39
S 38 40 41
S 40 42 43
S 42 44 45
S 44 46 47
S 46 48 49
S 48 50 51
S 50 52 53
S 52 ...

output:


result: