当前位置: 首页 > news >正文

蓝桥杯[OJ 2928]分糖果-CPP(贪心、字典序)

目录

一、题目描述:

二、整体思路

        (一)字典序比较规则

       (二)正确理解题意

    (三)分类讨论

三、代码


一、题目描述:

二、整体思路

        (一)字典序比较规则

        首先要知道字典序是怎么比较大小的,简单来说按以下次序进行比较:

  1. 两个字符串第一个不同的字母决定:如ab<ad,abcd<abcf
  2. 两个字符串同样位置没有不同的字母,按长度决定:如ab<abc,sde<sdeg    

       (二)正确理解题意

        其次要明白题目在说啥,实际上就是要输出一个长度最长的,字典序比其他糖果组成的字符串大的但是相差最小的字符串。比如abd字典序大于abc,但是不是字典序相差最小的(c与d),字典序相差最小的是abbcd与a(a与b)。

    (三)分类讨论

        为了方便比较,先把所有糖果按字典序排序

  1. 遍历所有糖果,每个人拿到的第一颗糖果有不同的。那么不管后面有没有糖果,最后拿到糖果的哪个人就是字典序最大的,如
    n=6,x=3,S=“aabdas”
    每个人第一颗糖果情况为:
    a
    a
    b
    这时无论剩下的糖果d、a、s怎么分配,b都是字典序最大的糖果组成的字符串,直接输出b即可
  2. 每个人拿到的第一颗糖果相同,剩下的糖果每颗都是相同的(剩下的糖果不一定与每个人第一颗糖果相同),那么就要把糖果尽可能分散到每个人手里来使得目标字符串长度最小,如
    n=6,x=3,S=“aaabbb”
    最佳分配情况为
    ab
    ab
    ab
  3. 每个人拿到的第一颗糖果相同,剩下的糖果存在不相同的糖果,如样例输入的情况,那么就要按字典序把相同的糖果平均分配给每个人,直到剩下糖果堆里出现第一种数量不足以均分给所有人的糖果。
    此时把剩下所有糖果都分给同一个人,确保字典序相差最小。
    如n=6,x=2,S="aabccd"
    abccd
    a

三、代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
  // 请在此输入您的代码
  int n,x;cin>>n>>x;
  string s;cin>>s;
  sort(begin(s),end(s));
  if(s[0]!=s[x-1]){
    cout<<s[x-1];//第一个糖果有不同的情况
  }else{//第一颗糖果都相同
    if(s[x]==s[n-1]){//第一颗糖果相同,剩下的糖果都是同一种糖果
      cout<<s[x];
      for(int i=x;i<=n-1;i+=x){//剩下的糖果均分给每个人
        cout<<s[i];
      }
    }else{//最后一种情况,剩下的糖果全部堆给一个人
      for(int i=x-1;i<=n-1;i++){
        cout<<s[i];
      }
    }
  }
  return 0;
}

相关文章:

  • FreeRTOS教程2 任务管理
  • 加密 / MD5算法 /盐值
  • C语言——简易版扫雷
  • 解决达梦集成 JPA 时表和字段注释注解不生效的问题
  • 2.4_4 死锁的检测和解除
  • Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-3、线条平滑曲面且可通过面观察柱体变化(三)
  • FPGA TestBench编写学习
  • 使用Vite构建Vue3+TypeScript项目
  • 深入了解网络流量清洗--使用免费的雷池社区版进行防护
  • 升级ChatGPT4.0失败的解决方案
  • 【亲测有效】解决三月八号ChatGPT 发消息无响应!
  • 【语法基础练习】1.变量、输入输出、表达式与顺序语句
  • MinGW-w64的下载与安装
  • 设计模式—桥接模式
  • SQL中如何添加数据
  • 安装zabbix
  • 风车IM即时通讯系统APP源码DJ2403版完整苹果安卓教程
  • Redis快速入门
  • Java基于SpringBoot+Vue的人事管理系统,附源码
  • 设计模式学习笔记 - 规范与重构 - 5.如何通过封装、抽象、模块化、中间层解耦代码?
  • 北美票房|昔日偶像风光不再,乔什·哈内特新片开画不佳
  • 新造古镇丨乌镇的水太包容了,可以托举住任何一种艺术
  • 上海交大计算机学院成立,设多个拔尖人才特色班
  • 姚洋将全职加盟上海财经大学,担任滴水湖高级金融学院院长
  • 数说母亲节|全球11亿女性进入更年期,“不是忍忍就好”
  • 巴基斯坦称回应挑衅,对印度发起军事行动