水題。根據題目公式分別計算 Misha 和 Vasya 的分數,比較大小輸出獲勝者名字。分數計算:max(3*a/10, a - a/250*c)。
模擬題。維護一個映射,記錄每個用戶的初始 handle 和當前 handle。輸入 n 條請求,每條給出 old_handle 和 new_handle。若 old_handle 已經是某個用戶的當前 handle,則更新該用戶的當前 handle 為 new_handle;否則創建新用戶記錄。最後輸出用戶數及每個用戶的初始與最終 handle。
圖論重構。給定 n 個節點的度數 d[i] 和異或和 x[i](鄰居編號的異或和)。從度為 1 的葉子節點入隊,每次取出葉子 u,其唯一鄰居 v = x[u],記錄邊 (u, v),更新 v:d[v]--, x[v] ^= u。若 v 變為葉子(d[v]==1)入隊。重複直到隊列為空。輸出邊數及所有邊。
queue<int> q;
for (int i = 0; i < n; ++i) if (d[i] == 1) q.push(i);
while (!q.empty()) {
int u = q.front(); q.pop();
if (d[u] != 1) continue;
int v = x[u];
edges.push_back({u, v});
d[v]--; x[v] ^= u;
if (d[v] == 1) q.push(v);
}