• 修篱笆


    修篱笆

     
    试题描述
          农夫约翰为了修理栅栏,要将一块很长的木板切割成N块。准备切成的木板长度为L1,L2,L3……LN,未切割前木板的长度恰好为切割后木板长度的总和。每次切断木板时,需要的开销为这块木板的长度。请求出按照目标要求将木板切割完的最小开销是多少?例如长度为21的木板切割成长度为13和8,开销为21;把长度为13的木板切割成5和8,则开销为13,所以将长度为21的木板切割成8,5,8的三块,开销是34.
     
    输入
    第一行仅一个正整数N,第二行有N个正整数,两两之间用一个空格分隔。
     
    输出
    符合题目要求的一个正整数
     
    输入示例
    3
    8 5 8
     
    输出示例
    34
     
    数据范围:N<=100000,Li<=10000 。
     
    其实就是合并果子的逆运算。利用优先队列排序,每次找最小的两个合并后加入队列。
    #include<iostream>
    #include<queue>
    struct cmp
    {
        bool operator()(const long long &i,const long long &j)
        {
            return i>j;
        }
    };
    using namespace std;
    int main()
    {
        priority_queue<long long,vector<long long>,cmp> s;
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            int hh;
            scanf("%d",&hh);
            s.push(hh);
        }
        long long ans=0;
        while(n>=2)
        {
            int a,b;
            a=s.top();
            s.pop();
            b=s.top();
            s.pop();
            s.push(a+b);
            ans+=a+b;
            n--;
        }
        cout<<ans<<endl;
        system("pause");
    }
    View Code
    O(∩_∩)O~ (*^__^*) 嘻嘻…… O(∩_∩)O哈哈~
  • 相关阅读:
    SpringBoot启动报错 java.lang.NoClassDefFoundError: javax/validation/ValidationException
    Java String类创建对象问题
    Java代码执行顺序
    Java抽象类与接口(2) ------接口
    Java抽象类与接口(1) ------抽象类
    Manjaro kde2020 使用记录
    生活常用小插件
    技术汇总
    Vue中使用websocket的正确使用方法
    js封装一个websocket
  • 原文地址:https://www.cnblogs.com/wls001/p/4963906.html
Copyright © 2020-2023  润新知