zoukankan      html  css  js  c++  java
  • SGU 203. Hyperhuffman

    (O(nlogn))可能会超时,最优二叉树有(O(n))的做法,当年合并果子全机房就我最快,哈哈。。

    开两个队列,一个存放未合并的节点,一个存放合并之后的子树,每次取最小时只需考虑这两个队列中的最小值即可,可以证明在队列内的元素单调。

    notice: 输入数据已经排好序了, Characters are given from most rare to most frequent 。

     1 #include <bits/stdc++.h>
     2 #define rep(_i, _j) for(int _i = 1; _i <= _j; ++_i)
     3 typedef long long LL;
     4 const LL inf = 0x3f3f3f3f3f3f3f3f;
     5 typedef double DB;
     6 using namespace std;
     7 
     8 const int maxn = 500000 + 10;
     9 int n;
    10 LL que[2][maxn];
    11 int head[2], tail[2];
    12 
    13 #define val(k) (head[k] > tail[k] ? inf : que[k][head[k]])
    14 
    15 LL min_val() {
    16     int d = val(1) < val(0);
    17     return que[d][head[d]++];
    18 }
    19 
    20 int main() {
    21 #ifndef ONLINE_JUDGE
    22     freopen("data.in", "r", stdin); freopen("data.out", "w", stdout);
    23 #endif
    24 
    25     scanf("%d", &n);
    26     head[0] = head[1] = 0, tail[0] = tail[1] = -1;
    27     for(int i = 1; i <= n; ++i) {
    28         scanf("%lld", &que[0][++tail[0]]);
    29     }
    30     LL ans = 0;
    31     for(int i = 1; i < n; ++i) {
    32         LL t = min_val() + min_val();
    33         que[1][++tail[1]] = t;
    34         ans += t;
    35     }
    36     printf("%lld
    ", ans);
    37 
    38     return 0;
    39 }
    View Code
  • 相关阅读:
    HTML link标签media参数
    初始化一个本地GIT仓储
    总结一下js的原型和原型链
    根据用户注册信息推荐 代码部分
    冷启动问题概述
    概率图模型
    LFM 隐语义模型
    item Collaborative Filtering
    推荐系统评测
    user Collaborative Filtering
  • 原文地址:https://www.cnblogs.com/hzf-sbit/p/3903906.html
Copyright © 2011-2022 走看看