华为题:任务调度

给定一个字符数组 tasks,表示 CPU 需要执行的任务列表。每个任务可以用一个大写字母表示。任务可以按任意顺序执行,且每个任务可以在 1 个单位时间内执行完。

两个相同种类的任务之间必须有长度为 n 的冷却时间。请计算完成所有任务所需的最短时间。

输入描述

第一行输入一个字符串 tasks,表示任务列表。

第二行输入一个整数 n,表示冷却时间。

输出描述

输出完成所有任务所需的最短时间。

示例 1

输入

text

复制代码
AAABBB
2

输出

text

复制代码
8

说明

一种可行安排:A -> B -> idle -> A -> B -> idle -> A -> B,共 8 个单位时间。

C++ 解法

cpp

复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    string tasks;
    cin >> tasks;

    int n;
    cin >> n;

    vector<int> cnt(26, 0);
    for (char c : tasks) cnt[c - 'A']++;

    sort(cnt.begin(), cnt.end(), greater<int>());

    int maxCount = cnt[0];
    int maxCountNum = 0;

    for (int x : cnt) {
        if (x == maxCount) maxCountNum++;
    }

    int ans = (maxCount - 1) * (n + 1) + maxCountNum;

    cout << max(ans, (int)tasks.size()) << endl;
    return 0;
}
相关推荐
ZhengEnCi4 小时前
大模型的分类到底怎么分:从基础模型到推理模型、从通用到专用的完整图谱
算法
取名真是5 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
罗西的思考5 小时前
【轻量化复刻大模型 / KIMI K3】KDA 模块交互式演示
人工智能·算法·机器学习
沫璃染墨7 小时前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
nm_zfyjt7 小时前
信息流广告投放优化实践:线索成本评估模型与转化链路重构(家装建材案例)
算法·重构·内蒙古朋友圈广告服务商·内蒙古朋友圈获客
xiaoye-duck8 小时前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(下):流式响应实现和测试
开发语言·网络·c++·语言模型
w_zero_one8 小时前
算法--构造
java·数据结构·算法
其实防守也摸鱼9 小时前
信创安全竞赛知识总结与题库
大数据·网络·人工智能·算法·安全·php
旖旎夜光9 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习