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

Codeforces 509B:Painting Pebbles——貪心構造著色方案

     編輯:關於C++

題目描述

n 堆鵝卵石,第 i 堆有 aᵢ 顆。用 k 種顏色著色,要求任意兩堆同色石子數差 ≤ 1。判斷是否可行並輸出方案。

可行條件

令 mx = max(aᵢ), mn = min(aᵢ)。可行當且僅當 mx - mn ≤ k。

構造方法

對每堆,按順序用顏色 1..k 循環著色。因最大堆最多比最小堆多 k 顆,循環著色保證每色在各堆中出現次數差 ≤ 1。

C 實現

#include <stdio.h>
int main() {
    int n,k,a[105];
    while(scanf("%d%d",&n,&k)==2) {
        int mn=1e9, mx=0;
        for(int i=0;i k) { puts("NO"); continue; }
        puts("YES");
        for(int i=0;i

複雜度

  • 時間:O(Σaᵢ)
  • 空間:O(n)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved