学了哈夫曼树这道题还是好想的,基本上和构造哈夫曼树的思路一样,但是题目要求最长si的最小值,所以用两个关键字的堆,第一关键字是把出现次数作为权值,第二关键字表示从该节点开始的最长长度,权值相同时,选择长度较小的合并. 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 struct node{ 5 ll num,dep; 6 //node(){} 7 node(ll a,ll b){num=a,de…