博客
关于我
牛客寒假4 e最小表达式
阅读量:609 次
发布时间:2019-03-13

本文共 1025 字,大约阅读时间需要 3 分钟。

拆分队列问题为贪心算法,通过高效确定字符权重位置,解决问题。

在此问题中,我们利用贪心算法,使数值大的字符尽可能落在权重较小的位置。步骤如下:

  • 读取输入并将非加号字符排序。
  • 按照加号分割点依次处理每个权重区域。
  • 从最高权重位置开始,依次向右移动处理每个区间。
  • #include 
    using namespace std;char s[500005];int ans[500004];int main() { char c; int sum = 0, cnt = 0, syw = 0, p = 0, w = 0; while ((c = getchar()) != '\n') { if (c == '+') { w++; } else { s[cnt++] = c; } } s[cnt] = '\0'; sort(s, s + cnt); int pos = 0; for (int i = cnt - 1; i >= 0; i -= (w + 1)) { sum = 0; for (int j = i; j >= pos; j--) { sum += s[j] - '0'; } sum += syw; if (pos == 0 && w == 0) ans[p++] = sum % 10; else { ans[p++] = sum % 10; syw = sum / 10; } pos += (w + 1); } if (syw > 0) { ans[p++] = syw; } for (int i = p - 1; i >= 0; i--) { printf("%d", ans[i]); } return 0;}

    代码解释:

    • 读取输入并记录+号数量w。
    • 将字符排序,较大值先存入。
    • 遍历ário按权重区间处理,每步移动w+1位置。
    • 计算区间和,并更新高位部分syw,逐步生成结果。
    • 逆序输出结果,确保权重最大位置数据优先处理。

    转载地址:http://jdpaz.baihongyu.com/

    你可能感兴趣的文章
    [87]用secureCRT连接虚拟机中的Ubuntu系统,出现“远程主机拒绝连接”错误
    查看>>
    [206]如何解决python升级后yum报错
    查看>>
    Shell脚本防DNS攻击检测并删除肉机IP
    查看>>
    如何在VSCode中定制JSON的IntelliSense
    查看>>
    椭圆曲线的定义
    查看>>
    多代理区块链框架客户端的操作
    查看>>
    RSA操作中的公钥和私钥的生成
    查看>>
    C#从1打印到100再打印到1-递归的应用
    查看>>
    go语言中类的继承和方法的使用
    查看>>
    Ubuntu 修改权限的操作
    查看>>
    caffe训练的时候遇到的text-format 错误解决方案。
    查看>>
    Java 8新特性(一):Lambda表达式
    查看>>
    ZOJ问题(坑死了)
    查看>>
    Little Zu Chongzhi's Triangles
    查看>>
    算法入门
    查看>>
    cf-A. Wet Shark and Odd and Even(水)
    查看>>
    Train Problem II(卡特兰数+大数乘除)
    查看>>
    Ignatius and the Princess II(全排列)
    查看>>
    一些技术博客
    查看>>
    第01问:MySQL 一次 insert 刷几次盘?
    查看>>