首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

Codeforces Round #279 (Div. 2) 完整解題報告 A-E

     編輯:C++ 入門

Codeforces Round #279 (Div. 2) 完整解題報告 A-E

A. Team Olympiad

三類學生(1 程式、2 數學、3 體育),組隊需三類各一。貪心:統計三類人數,最小值即最大隊數。按輸入順序依次分配索引。

int cnt[4] = {}, id[4][5005];
for (i=1; i<=n; i++) {
    scanf("%d", &x);
    id[x][++cnt[x]] = i;
}
int teams = min(cnt[1], min(cnt[2], cnt[3]));
printf("%d\n", teams);
for (i=1; i<=teams; i++)
    printf("%d %d %d\n", id[1][i], id[2][i], id[3][i]);

B. Queue

還原隊列順序。給定 n 對 (u, v) 表示 u 在 v 前面。構建 next[u]=v 與入度。偶數位從 0 開始鏈接,奇數位從入度為 0 的節點開始。

// 構建 next 與 in-degree
for (i=0; i

C. Hacking Cypher

字符串分成兩段,前段能被 a 整除,後段能被 b 整除,且後段無前導零。預處理前綴模 a、後綴模 b(利用 10^k mod b)。

// 預處理 10^k % b
pow10[0] = 1 % b;
for (i=1; i<=len; i++) pow10[i] = (pow10[i-1] * 10) % b;
// 前綴模 a
for (i=0; i=0; i--) suf[i] = (s[i]-'0') * pow10[len-1-i] + suf[i+1]) % b;
// 枚舉分割點
for (i=0; i

D. Chocolate

兩塊巧克力 a1×b1, a2×b2。操作:面積減半(去掉因子 2),或 2/3 面積(因子 3 變 2)。目標面積相等且操作數最少。分解 2、3 的指數,貪心對齊指數。

// 計算面積的 2、3 指數
// 先讓 3 的指數相等(多的轉 2),再讓 2 的指數相等(多的除 2)
// 最後檢查剩餘面積(去掉 2、3 因子後)是否相等

E. Restoring Increasing Sequence

字符串含數字與 ?,替換 ? 使序列嚴格遞增。貪心:從左到右,每個數取比前一個大的最小可能值。模擬比較長度、逐位填充。

總結

題目核心技巧難點
A計數貪心輸出任意合法分配
B鏈表重構奇偶位分離邏輯
C模運算+預處理後綴模計算技巧
D質因數分解貪心操作語義轉化為指數調整
E字符串貪心構造邊界情況處理繁瑣

本場比賽考察基礎演算法靈活應用,代碼實現細節決定成敗,適合練習競賽型思維。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved