博客
关于我
【ybt高效进阶4-1-1】【luogu P1090】合并果子 / Fence Repair G
阅读量:325 次
发布时间:2019-03-04

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

合并果子 / Fence Repair G

题目大意:

有一堆东西,每次可以选两个东西,用它们大小的和的代价,把它们合并,得到一个它们大小和的东西。目标是把这些东西合并成一个所需的最小代价。

思路:

我们考虑贪心,让每次合并的费用都尽可能小。自然想到可以每次选已有石头中最小的两个合并。然后可以用堆维护,然后就可以了。

代码:

#include 
#include
#define ll long longusing namespace std;int n;priority_queue
, greater
> q;ll ans = 0, x, y;int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%lld", &x); q.push(x); } while (!q.empty()) { x = q.top(); q.pop(); y = q.top(); q.pop(); ans += x + y; if (q.empty()) { break; } q.push(x + y); } printf("%lld", ans); return 0;}

步骤解释:

  • 首先读取输入的数量n,然后读取n个数。
  • 将这些数放入一个最小堆中。
  • 然后循环处理堆中的元素:
    • 取出堆顶的两个最小元素x和y。
    • 计算它们的和ans += x + y。
    • 如果堆为空,说明只剩一个元素了,结束循环。
    • 将x + y再放回堆中。
  • 重复上述步骤直到堆为空。
  • 最后输出总代价ans。
  • 这个方法的时间复杂度是O(n log n),因为每次合并需要O(log n)的时间,而合并的次数是n-1次。这样确保了算法的高效性。

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

    你可能感兴趣的文章
    OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
    查看>>
    OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
    查看>>
    OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
    查看>>
    OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
    查看>>
    OAuth2.0_授权服务配置_令牌服务和令牌端点配置_Spring Security OAuth2.0认证授权---springcloud工作笔记143
    查看>>
    OAuth2.0_授权服务配置_客户端详情配置_Spring Security OAuth2.0认证授权---springcloud工作笔记142
    查看>>
    OAuth2.0_授权服务配置_密码模式及其他模式_Spring Security OAuth2.0认证授权---springcloud工作笔记145
    查看>>
    OAuth2.0_授权服务配置_资源服务测试_Spring Security OAuth2.0认证授权---springcloud工作笔记146
    查看>>
    OAuth2.0_环境介绍_授权服务和资源服务_Spring Security OAuth2.0认证授权---springcloud工作笔记138
    查看>>
    OAuth2.0_环境搭建_Spring Security OAuth2.0认证授权---springcloud工作笔记139
    查看>>
    oauth2.0协议介绍,核心概念和角色,工作流程,概念和用途
    查看>>
    OAuth2授权码模式详细流程(一)——站在OAuth2设计者的角度来理解code
    查看>>
    oauth2登录认证之SpringSecurity源码分析
    查看>>
    OAuth2:项目演示-模拟微信授权登录京东
    查看>>
    OA系统多少钱?OA办公系统中的价格选型
    查看>>
    OA系统选型:选择好的工作流引擎
    查看>>
    OA让企业业务流程管理科学有“据”
    查看>>
    OA项目之我的会议(会议排座&送审)
    查看>>
    OA项目之我的会议(查询)
    查看>>
    Object c将一个double值转换为时间格式
    查看>>