奇怪的RE
查看原帖
奇怪的RE
1283951
csxx601cjy楼主2024/8/19 21:21

到底哪里错了

\color{purple}RE$$记录

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
	ll w,h;//权值&高度
	bool operator<(const node &x)const{return w!=x.w?x.w<w:x.h<h;}//结构体重载
};
priority_queue<node>q;//结构体优先队列
ll n,k,t,sum,mx,ssum=0,mmx=LONG_LONG_MIN;
int main(){
	scanf("%lld %lld",&n,&k);
	for(ll i=0;i<n;i++){
		scanf("%lld",&t);
		q.push((node){t,1});
	}
	if((n-1)%(k-1)!=0){//要补点!
		t=n-1-(n-1)%(k-1);
		for(ll i=0;i<t;i++)
			q.push((node){0,1});
	}
	while(q.size()>1){//huffman树
		sum=0,mx=LONG_LONG_MIN;
		for(ll i=0;i<k;i++){
			sum+=q.top().w;
			mx=max(mx,q.top().h);
			q.pop();
		}
		q.push((node){sum,mx+1});
		ssum+=sum;//重新编码后的最短长度
		mmx=max(mmx,mx);//最长的Si的最短长度
	}
	printf("%lld\n%lld",ssum,mmx);
	return 0;
}
2024/8/19 21:21
加载中...