- 合并果子
- 2017-07-05 20:42:45 @
#include<cmath>
#include<math.h>
#include<ctype.h>
#include<algorithm>
#include<bitset>
#include<cassert>
#include<cctype>
#include<cerrno>
#include<cfloat>
#include<ciso646>
#include<climits>
#include<clocale>
#include<complex>
#include<csetjmp>
#include<csignal>
#include<cstdarg>
#include<cstddef>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<cwchar>
#include<cwctype>
#include<deque>
#include<exception>
#include<fstream>
#include<functional>
#include<iomanip>
#include<ios>
#include<iosfwd>
#include<iostream>
#include<istream>
#include<iterator>
#include<limits>
#include<list>
#include<locale>
#include<map>
#include<memory>
#include<new>
#include<numeric>
#include<ostream>
#include<queue>
#include<set>
#include<sstream>
#include<stack>
#include<stdexcept>
#include<streambuf>
#include<string>
#include<typeinfo>
#include<utility>
#include<valarray>
#include<vector>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
const int inf=2147483647;
int n;
int a[11111];
int ans;
set<int> st;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",a+i);
st.insert(a[i]);
}
for(int _=1;_<n;_++)
{
int a=*st.begin();
st.erase(st.begin());
int b=*st.begin();
st.erase(st.begin());
ans+=a+b;
st.insert(a+b);
}
printf("%d\n",ans);
return 0;
}
4 条评论
-
Fop_zz LV 10 @ 2017-08-02 17:15:10
。。看不懂
但是为什么要set
stl少用比较好 -
2017-08-02 16:16:42@
你没有把原来合并的堆给删除,反而有insert(a+b),使得set里面的数据越来越多。虽然你有n限制,但是如果你把合并之后的水果堆删除了,就要快一半而不用处理全部的n个数据。
-
2017-07-06 14:53:49@
开了O2的set是O(1)的(逃
-
2017-07-06 14:44:52@
你有试过不用这么多头文件么?还有有的stl本身很慢的。
- 1