zoukankan      html  css  js  c++  java
  • PAT (Basic Level) Practice (中文)1070 结绳 (25 分) (优先队列)

    给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来两段绳子的长度就会减半。

    rope.jpg

    给定 N 段绳子的长度,你需要找出它们能串成的绳子的最大长度。

    输入格式:

    每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 N (2);第 2 行给出 N 个正整数,即原始绳段的长度,数字间以空格分隔。所有整数都不超过1。

    输出格式:

    在一行中输出能够串成的绳子的最大长度。结果向下取整,即取为不超过最大长度的最近整数。

    输入样例:

    8
    10 15 12 3 4 13 1 15
    

    输出样例:

    14

    优先队列
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <string>
     4 #include <cstring>
     5 #include <queue>
     6 using namespace std;
     7 int n;
     8 int tmp,x;
     9 int main()
    10 {
    11     while(cin>>n){
    12         priority_queue<int, vector<int>, greater<int> > pq;
    13         for(int i=0;i<n;i++){
    14             cin>>x;
    15             pq.push(x);
    16         }
    17         while(pq.size()>=2){
    18             tmp=pq.top();
    19             pq.pop();
    20             tmp=(tmp+pq.top())/2;
    21             pq.pop();
    22             pq.push(tmp);
    23         }
    24         cout<<pq.top()<<endl;
    25     }
    26     return 0;
    27 } 
  • 相关阅读:
    leetcode16 3-Sum
    leetcode679:24Game
    leetcode621 贪心:任务安排
    SpringMVC中的Controller默认单例
    O(n)复杂度求没有出现的数字(leetcode448)
    SpringBoot获取ApplicationContext
    Largest Number(leetcode 179)
    使用免费ip代理进行投票
    Oracle分页
    Oracle JDBC配置
  • 原文地址:https://www.cnblogs.com/shixinzei/p/11186808.html
Copyright © 2011-2022 走看看