import syssys.setrecursionlimitclass SegmentTree: def __init__(self, data): self.n = len(data) self.size = 1 while self.size segR: return if l mid: self.update(l, r, val, 2 * idx + 1, mid + 1, segR) self.tree[idx] = min(self.tree[2 * idx], self.tree[2 * idx + 1]) def query(self, l, r, idx=1, segL=0, segR=None): if segR is None: segR = self.size - 1 if r segR: return 10**18 if l mid: right_res = self.query(l, r, 2 * idx + 1, mid + 1, segR) return min(left_res, right_res)def main: data = sys.stdin.read.splitlines if not data: print(0) return n = int(data[0]) cards = for i in range(1, 1 + n): parts = data[i].split a = int(parts[0]) cnt = int(parts[1]) color = parts[2] cards.append((a, cnt, color)) color_groups = {} for a, cnt, color in cards: if color not in color_groups: color_groups[color] = color_groups[color].append((a, cnt)) total_ans = 0 for color, group in color_groups.items: group.sort(key=lambda x: x[0]) segments = current_seg = last_val = -10 for a, cnt in group: if current_seg: if a == last_val + 1: current_seg.append((a, cnt)) else: if current_seg: segments.append(current_seg) current_seg = [(a, cnt)] else: current_seg.append((a, cnt)) last_val = a if current_seg: segments.append(current_seg) for seg in segments: L = len(seg) if L摘要:import syssys.setrecursionlimitclass SegmentTree: def __init__(self, data): self.n = len(data) self.size = 1 while self.size < sel
来源:小殷说科技