【题解】ACMICPC 2015 final L 哈弗曼树

http://59.77.230.22/icpc.baylor.edu/download/worldfinals/problems/icpc2015.pdf

题意就是给一个n,有n天,每天的天气是4种天气之一,四种天气的概率给你,然后叫你对n天天气可能产生的天气序列进行编码,就是总共有4^n个天气序列。类似哈弗曼编码那样,每种天气序列的编码唯一,并且不能是其他编码的前缀。问能得到的最小的天气序列的期望编码长度。其实就是哈弗曼编码...

难点在于n最大20,就是有4^20种天气序列,最暴力的处理出来是不行的。

突破点在于每天的4种天气的概率是一样的,就是a,b,c,d来说,那么产生的天气序列的概率值最多只有C(n+3,3)种,就是相当于将n天分配到4中天气中,每种天气有多少天这样。这样大概是1000多种,然后就类似哈弗曼树的做法做了,复杂度估计是1000^2*log1000,没仔细验证,应该是吧- -。//------------- 实际上大概是10000*log10000吧,每种最多产生log2(...)种新的,平均大概10吧,所以最多1W种左右,然后处理过程要用到堆或者set之类的,logn。

我校final队6题,这题没过,场上50多队过的,特意去看了下,果然不难...但我还是想了好久...大概CF C题,TC 500pt的难度吧。

原文地址:https://www.cnblogs.com/seen1020/p/4522605.html