結果
問題 | No.2462 七人カノン |
ユーザー | FromBooska |
提出日時 | 2023-09-09 13:21:01 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 322 ms / 2,000 ms |
コード長 | 1,008 bytes |
コンパイル時間 | 302 ms |
コンパイル使用メモリ | 86,916 KB |
実行使用メモリ | 101,600 KB |
最終ジャッジ日時 | 2023-09-09 13:21:13 |
合計ジャッジ時間 | 11,778 ms |
ジャッジサーバーID (参考情報) |
judge12 / judge14 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 94 ms
85,120 KB |
testcase_01 | AC | 89 ms
85,300 KB |
testcase_02 | AC | 84 ms
85,036 KB |
testcase_03 | AC | 112 ms
85,372 KB |
testcase_04 | AC | 100 ms
85,304 KB |
testcase_05 | AC | 99 ms
85,300 KB |
testcase_06 | AC | 100 ms
84,912 KB |
testcase_07 | AC | 98 ms
84,884 KB |
testcase_08 | AC | 97 ms
85,044 KB |
testcase_09 | AC | 95 ms
85,036 KB |
testcase_10 | AC | 102 ms
85,180 KB |
testcase_11 | AC | 101 ms
85,316 KB |
testcase_12 | AC | 102 ms
84,916 KB |
testcase_13 | AC | 304 ms
99,216 KB |
testcase_14 | AC | 285 ms
99,908 KB |
testcase_15 | AC | 299 ms
97,900 KB |
testcase_16 | AC | 287 ms
101,488 KB |
testcase_17 | AC | 316 ms
101,448 KB |
testcase_18 | AC | 112 ms
87,812 KB |
testcase_19 | AC | 113 ms
88,040 KB |
testcase_20 | AC | 310 ms
100,660 KB |
testcase_21 | AC | 322 ms
100,948 KB |
testcase_22 | AC | 319 ms
100,428 KB |
testcase_23 | AC | 313 ms
100,628 KB |
testcase_24 | AC | 239 ms
95,492 KB |
testcase_25 | AC | 322 ms
101,600 KB |
ソースコード
# 愚直にやれば当然間に合わない、どう高速化するかという問題 # どの時刻に何人かというのは絶対必須、これは累積和でやる # さらに時刻ごとに何人かを逆数としたテーブルを作ろう、さらに累積和またはセグメントツリー # そしてクエリに戻って各人の演奏時間に合わせて、逆数表から和を求める # これで高速か? N, Q = map(int, input().split()) howmany = [0]*(10**5+3) IST = [] for i in range(Q): i, s, t = map(int, input().split()) IST.append((i, s, t)) howmany[s+1] += 1 howmany[t+1] -= 1 for i in range(1, 10**5+3): howmany[i] += howmany[i-1] inverse = [0]*(10**5+3) for i in range(10**5+3): if howmany[i] != 0: inverse[i] = 1/howmany[i] cumu = [0] temp = 0 for i in range(1, 10**5+3): temp += inverse[i] cumu.append(temp) person = [0]*(N+1) for i, s, t in IST: person[i] += cumu[t]-cumu[s] for p in person[1:]: print(p)