这完全是一道记录我成长的题目。
开始的开始看到这道题目,貌似是watercube的第一场比赛。貌似是第一次网络赛。那时候是盐在想这道题目。YY了各种方法没有能过sample。后来叶神告诉我那是什么哈夫曼树。但还是没有去写,那时根本不懂什么是哈夫曼树。
后来经过了一个暑假我想我还是成长了很多,想到暑假前,那真的是一无所知,更不要说打校赛的时候了。当然现在也是大部分得不知道。只是偶然听说,但是我想我会在这后来的一年将它们on the way。
暑假弱小的The 25th hour开始刷论坛上的题目。刚看到它的时候我小激动下,似曾相识燕归来。当兴冲冲的敲了代码后TLE了,好是失望。这是一道3个月前大家都很轻松的题目。后来看了题解,当时果断不会优先队列,于是只有模仿哈夫曼树的贪心的思想,弄两个数组搞。但是一直WA。今天又碰到了,于是用优先队列。开始WA原来数据是long long的。后来改了后就过了。只是觉得很不容易。这道题,陪我从第一次比赛到现在很是感动与慨叹,于是写篇题解寥表纪念。
经过一个暑假,我想我已经看到了自己的未来,或者是拼搏的方向,无论结果如何,我想我都会试试的,毕竟我还是那个会被送墙角鲜花的老人所感动的孩子。
上代码:
#include<cstdio>
#include<queue>
using namespace std;
priority_queue<long long,vector<long long>,greater<long long> > pq;
main(){
long long n,a,b,ans=0,i;
scanf("%lld",&n);
for(i=0;i<=n-1;i++){
scanf("%lld",&a);
pq.push(a);
}
while(1){
a=pq.top();
pq.pop();
if(pq.empty()){
break;
}
b=pq.top();
pq.pop();
ans+=(a+b);
if(pq.empty()){
break;
}
pq.push(a+b);
}
printf("%lld\n",ans);
}
开始的开始看到这道题目,貌似是watercube的第一场比赛。貌似是第一次网络赛。那时候是盐在想这道题目。YY了各种方法没有能过sample。后来叶神告诉我那是什么哈夫曼树。但还是没有去写,那时根本不懂什么是哈夫曼树。
后来经过了一个暑假我想我还是成长了很多,想到暑假前,那真的是一无所知,更不要说打校赛的时候了。当然现在也是大部分得不知道。只是偶然听说,但是我想我会在这后来的一年将它们on the way。
暑假弱小的The 25th hour开始刷论坛上的题目。刚看到它的时候我小激动下,似曾相识燕归来。当兴冲冲的敲了代码后TLE了,好是失望。这是一道3个月前大家都很轻松的题目。后来看了题解,当时果断不会优先队列,于是只有模仿哈夫曼树的贪心的思想,弄两个数组搞。但是一直WA。今天又碰到了,于是用优先队列。开始WA原来数据是long long的。后来改了后就过了。只是觉得很不容易。这道题,陪我从第一次比赛到现在很是感动与慨叹,于是写篇题解寥表纪念。
经过一个暑假,我想我已经看到了自己的未来,或者是拼搏的方向,无论结果如何,我想我都会试试的,毕竟我还是那个会被送墙角鲜花的老人所感动的孩子。
上代码:
#include<cstdio>
#include<queue>
using namespace std;
priority_queue<long long,vector<long long>,greater<long long> > pq;
main(){
long long n,a,b,ans=0,i;
scanf("%lld",&n);
for(i=0;i<=n-1;i++){
scanf("%lld",&a);
pq.push(a);
}
while(1){
a=pq.top();
pq.pop();
if(pq.empty()){
break;
}
b=pq.top();
pq.pop();
ans+=(a+b);
if(pq.empty()){
break;
}
pq.push(a+b);
}
printf("%lld\n",ans);
}