1 条题解
-
0
C++ :
#include<iostream> #include<cstring> #include<cstdio> using namespace std; struct tree { long long data; long long lch,rch; }; long long n,k,tot1,tot2; tree a[200],b[200]; void init(); long long my_min(); long long my_max(); void min_huffman(); void max_huffman(); int main() { //freopen("hfm5.in","r",stdin); //freopen("hfm5.out","w",stdout); init(); max_huffman(); min_huffman(); cout<<a[2*n-1].data<<endl; cout<<b[2*n-1].data<<endl; cout<<a[2*n-1].data-b[2*n-1].data<<endl; return 0; } void init() { cin>>n; tot1=0; tot2=0; for(int i=1;i<=n;i++) { cin>>a[i].data; b[i].data=a[i].data; } } long long my_min() { long long temp=0x7fffffffffffffff; for(int i=1;i<=n;i++) { if(a[i].data<temp) { temp=a[i].data; k=i; } } a[k].data=0x7fffffffffffffff; return temp; } long long my_max() { long long temp=-1; for(int i=1;i<=n;i++) { if(b[i].data>temp) { temp=b[i].data; k=i; } } b[k].data=-1; return temp; } void min_huffman() { for(int i=n+1;i<=2*n-1;i++) { a[i].lch=my_min(); a[i].rch=my_min(); a[i].data=a[i].lch*a[i].rch+1; a[k].data=a[i].data; } } void max_huffman() { for(int i=n+1;i<=2*n-1;i++) { b[i].lch=my_max(); b[i].rch=my_max(); b[i].data=b[i].lch*b[i].rch+1; b[k].data=b[i].data; } }
- 1
信息
- ID
- 1081
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者