結果
| 問題 | No.3424 Shooting Game |
| コンテスト | |
| ユーザー |
norioc
|
| 提出日時 | 2026-10-25 14:45:33 |
| 言語 | PyPy3 (8.0.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 760 ms / 2,000 ms |
| + 768µs | |
| コード長 | 1,727 bytes |
| 記録 | |
| コンパイル時間 | 81 ms |
| コンパイル使用メモリ | 64,576 KB |
| 実行使用メモリ | 79,928 KB |
| 最終ジャッジ日時 | 2026-10-25 14:45:48 |
| 合計ジャッジ時間 | 8,754 ms |
|
ジャッジサーバーID (参考情報) |
judge6_0 / judge7_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 12 |
ソースコード
from atcoder.lazysegtree import LazySegTree
def RangeMaxUpdatePointGetLST(n: int, e: int):
# 値データ
Data = int
# 遅延データ
Lazy = int
# 値データを合成 (使わない)
def op(a: Data, b: Data) -> Data:
return 0
# 遅延データを値データに反映 : f(x)
def mapping(f: Lazy, x: Data) -> Data:
if f == e: return x
return max(f, x)
# 遅延データを伝搬
# 二つの遅延データを合成 : (f . g)
def composition(f: Lazy, g: Lazy) -> Lazy:
if f == e: return g
return max(f, g)
class C:
def __init__(self, n):
# 単位元 e : 全ての a に対して op(a, e) = op(e, a) = a を満たす
# 恒等写像 id : 全ての a に対して mapping(id, a) = a を満たす
self.segt = LazySegTree(
op=op,
e=e,
mapping=mapping,
composition=composition,
id_=e,
v=[e] * n)
def range_max_update(self, l: int, r: int, x: int):
"""区間 [l, r) を x に変更する"""
self.segt.apply(l, r, x)
def point_get(self, p: int) -> int:
"""位置 p の要素を求める"""
return self.segt.get(p)
return C(n)
N, T = map(int, input().split())
lsegt = RangeMaxUpdatePointGetLST(2 * 10**5 + 10, 0)
xs = []
for _ in range(N):
L, R, P = map(int, input().split())
lsegt.range_max_update(L, R+1, P)
sz = 2 * 10**5 + T + 10
dp = [0] * sz
for i in range(2 * 10**5 + 1):
if i+T >= sz: break
dp[i+1] = max(dp[i+1], dp[i])
dp[i+T] = max(dp[i+T], dp[i] + lsegt.point_get(i))
ans = max(dp)
print(ans)
norioc