博客
关于我
51nod 1099 任务执行顺序(贪心)
阅读量:631 次
发布时间:2019-03-14

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

为了优化给定的代码,我们进行了以下步骤:

  • 简化循环结构:合并了传入数据处理的两个循环为一个,减少了重复遍历数组的代码量。

  • 优化变量命名:将复杂的变量名称进行重新命名,以提高代码的可读性,确保变量的含义更加明确。

  • 去掉不必要的注释:对于次要的注释和对问题描述的重复说明,进行了精简,以让代码更加简洁。

  • 提高变量命名准确性:确保变量名能够准确反映其含义,例如,将sum改为更具描述性的名称。

  • 删除冗余代码:审查代码并删除了不必要的部分,确保代码简洁高效。

  • 以下是优化后的代码:

    #include
    using namespace std;const int N = 1e6 + 10;struct Node { int o, r, c; //'clock as 'c' for (o-r)};bool cmp(Node a, Node b) { // Using a comparator function return a.c > b.c;}int main() { int n; scanf("%d", &n); struct Node a[N]; for (int i = 0; i < n; ++i) { int o, r; scanf("%d%d", &o, &r); a[i].o = o; a[i].r = r; a[i].c = o - r; } sort(a, a + n, cmp); int sum = 0, maxn = 0; for (int i = 0; i < n; ++i) { if (sum + a[i].o > maxn) { maxn = sum + a[i].o; } if (sum > maxn) { maxn = sum; } sum += a[i].r; } printf("%d\n", maxn); return 0;}

    逐行解释

  • 代码开始:包含常用头文件,导入必要的命名空间,并定义了常量N作为数组的大小最大值。

  • 结构体定义Node结构体用于存储每个节点的三个属性or及其差值c

  • 比较函数cmp函数以c值降序排序,确保较大的c(即更优化的节点)排列在前面。

  • 主函数:读取输入n,邻近结构体数组a,逐个读取每个节点的or值,并计算c值。

  • 排序:使用自定义比较函数对节点按照c值降序排序。

  • 计算最大值部分:初始化summaxn。通过遍历排序后的节点,在每次处理节点时,更新maxn的值。sum总和加上当前节点的r值并逐次更新,以反映此时已经处理完的所有节点的关系。

  • 输出结果:打印最终的最大值。

  • 这种优化后的代码保留了原有算法的核心逻辑,但使其更加高效、简洁,并提高了可读性。

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

    你可能感兴趣的文章
    Navicat中怎样将SQLServer的表复制到MySql中
    查看>>
    navicat创建连接 2002-can‘t connect to server on localhost(10061)且mysql服务已启动问题
    查看>>
    Navicat可视化界面导入SQL文件生成数据库表
    查看>>
    Navicat向sqlserver中插入数据时提示:当 IDENTITY_INSERT 设置为 OFF 时,不能向表中的标识列插入显式值
    查看>>
    Navicat因导入的sql文件中时间数据类型有参数而报错的原因(例:datetime(3))
    查看>>
    Navicat如何连接MySQL
    查看>>
    navicat导入.sql文件出错2006- MySQLserver has gone away
    查看>>
    Navicat导入海量Excel数据到数据库(简易介绍)
    查看>>
    Navicat工具Oracle数据库复制 or 备用、恢复功能(评论都在谈论需要教)
    查看>>
    navicat工具查看MySQL数据库_表占用容量_占用空间是多少MB---Linux工作笔记048
    查看>>
    navicat怎么导出和导入数据表
    查看>>
    Navicat报错connection is being used
    查看>>
    Navicat报错:1045-Access denied for user root@localhost(using passwordYES)
    查看>>
    Navicat控制mysql用户权限
    查看>>
    navicat操作mysql中某一张表后, 读表时一直显示正在载入,卡死不动,无法操作
    查看>>
    Navicat连接mysql 2003 - Can't connect to MySQL server on ' '(10038)
    查看>>
    Navicat连接mysql数据库中出现的所有问题解决方案(全)
    查看>>
    Navicat连接Oracle出现Oracle library is not loaded的解决方法
    查看>>
    Navicat连接Oracle数据库以及Oracle library is not loaded的解决方法
    查看>>
    Navicat连接sqlserver提示:未发现数据源名并且未指定默认驱动程序
    查看>>