나무 - 쌓 기 구조 연습 - 과일 을 합 친 하프 만 트 리 Time Limit: 1000 MS Memory Limit: 65536 KB Submit Statistic Discuss Problem Description
2015 단어 데이터 구조
Time Limit: 1000MS
Memory Limit: 65536KB
Submit Statistic Discuss
Problem Description
한 과수원 에 서 는 이미 모든 열 매 를 따 냈 고, 과일의 종류 에 따라 다른 더미 로 나 누 었 다.모든 과일 을 한 무더기 로 합성 하기 로 많이 결정 하 세 요.
매번 합병 할 때마다 두 무더기 의 과일 을 한데 모 을 수 있 고 소모 하 는 체력 은 두 무더기 의 과일 무게 의 합 과 같다.모든 과일 이 n - 1 차 합병 을 거 친 후에 한 무더기 만 남 았 음 을 알 수 있다.과일 을 합병 할 때 총 소모 되 는 체력 은 합병 할 때마다 소모 되 는 체력 과 같다.
이 과일 들 을 집 으로 옮 기 는 데 많은 힘 을 들 여야 하기 때문에 과일 을 합 칠 때 가능 한 한 체력 을 절약해 야 한다.모든 과일의 무 게 를 1 로 가정 하고 과일의 종류 수 와 모든 과일의 수 를 알 고 있 습 니 다. 당신 의 임 무 는 합병 순서 방안 을 설계 하여 많은 체력 을 최소 화하 고 이 최소 의 체력 소모 치 를 수출 하 는 것 입 니 다.
예 를 들 어 세 가지 과일 이 있 는데 그 수 는 1, 2, 9 이다.먼저 1, 2 더 미 를 합 칠 수 있 고, 새 더 미 는 3 이 며, 체력 소 모 는 3 이다.이 어 새 더 미 를 기 존의 세 번 째 더 미 를 합 쳐 새로운 더 미 를 얻 었 고, 숫자 는 12 이 며, 체력 은 12 이다.그래서 체력 을 많이 소모 한다 = 3 + 12 = 15.15 가 최소 체력 소모 치 임 을 증명 할 수 있다.
Input
첫 번 째 줄 은 하나의 정수 n (1 < = n < = 10000) 으로 과일의 종류 수 를 나타 낸다.두 번 째 줄 은 n 개의 정 수 를 포함 하고 빈 칸 으로 구분 하 며, i 번 째 ai (1 < = ai < = 20000) 는 i 번 째 열매 의 수량 입 니 다.
Output
출력 은 한 줄 을 포함 합 니 다. 이 줄 은 하나의 정수 만 포함 합 니 다. 즉, 가장 작은 체력 소모 값 입 니 다.입력 데 이 터 는 이 값 이 2 ^ 31 보다 작 음 을 보증 합 니 다.
Example Input
3
1 2 9
Example Output
15
。。。 = =
#include
using namespace std; int main() { int i,j; int n; priority_queue ,greater >q; while(cin>>n) { while(n--) { int x; cin>>x; q.push(x); } int sum=0; while(q.size()!=1) { int t1=q.top(); sum+=t1; q.pop(); int t2=q.top(); q.pop(); sum+=t2; int x=t1+t2; q.push(x); } printf("%d
",sum); } return 0; }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.