1 条题解

  • 0
    @ 2025-10-10 20:11:59

    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
    上传者