zoukankan      html  css  js  c++  java
  • PAT 1070 结绳(25)(代码)

    1070 结绳(25 分)

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

    rope.jpg

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

    输入格式:

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

    输出格式:

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

    输入样例:

    8
    10 15 12 3 4 13 1 15
    

    输出样例:

    14

    思路: 每次取最短的两根数字对折 ,就能够得到绳子的最大长度,所有我们首先对绳子的长度进行排序,取最短的两根绳子,对折,对折后的长度一定不会超过这两根绳子的最大长度,所有不需要担心打乱顺序。只需要一次排序就行。

    #include <iostream>
    #include <algorithm>
    using namespace std;
    int main() {
    	int list[10000];
    	int n;
    	cin >> n;
    	for (int i = 0; i<n; i++) 
    		cin >> list[i];
    	sort(list, list + n);
    	double sum = list[0];
    	for (int i = 0; i<n; i++) 
    		sum = (sum + list[i]) / 2;
    	cout << (int)sum;
    	return 0;
    }
  • 相关阅读:
    操作系统-微内核操作系统
    设备管理-虚设备与SPOOLING技术
    设备管理-数据传输控制方式
    文件管理-空闲存储空间的管理
    文件管理-索引文件结构
    Alpha冲刺8
    Alpha冲刺7
    Alpha冲刺6
    Alpha冲刺5
    Alpha冲刺4
  • 原文地址:https://www.cnblogs.com/F-itachi/p/9974418.html
Copyright © 2011-2022 走看看