小红玩纸牌【C++和Python实现】

360影视 欧美动漫 2025-08-05 19:38 3

摘要:import syssys.setrecursionlimitclass SegmentTree: def __init__(self, data): self.n = len(data) self.size = 1 while self.size < sel

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 #include#include#include#includelazy; void build(const vector& arr) { for (int i = 0; i 0; i--) { tree[i] = min(tree[2 * i], tree[2 * i + 1]); } } void push(int idx) { if (lazy[idx] != 0) { tree[2 * idx] += lazy[idx]; tree[2 * idx + 1] += lazy[idx]; if (2 * idx rx) return; if (l rx) return (long long)1e18; if (l > n; map>> color_groups; for (int i = 0; i > a >> cnt >> color; color_groups[color].push_back({a, cnt}); } long long total_ans = 0; for (auto& [color, group] : color_groups) { sort(group.begin, group.end); vector> current_seg; if (!group.empty) { current_seg.push_back(group[0]); for (int i = 1; i cnt_list; for (auto& p : seg) { cnt_list.push_back(p.second); } SegmentTree seg_tree(cnt_list); long long ans_seg = 0; for (int start = 0; start

来源:小殷说科技

相关推荐