[ZPG TEST 105] 扑克游戏【Huffman】

扑克游戏

(poker)

题目描述:

有一棵无穷大的满二叉树,根为star,其余所有点的权值为点到根的距离,如图:

现在你有一些扑克牌,点数从1到13,你要把这些扑克牌全部放到这个树上:

  1. 当你把点数为i的扑克牌放在权值为j的点上,那么你会得到i*j的分数。
  2. 当你把一个扑克牌放在一个节点上,那么你就不能把别的扑克牌放在这个节点以及这个节点的子树上。

你的目标是最小化你的得分。

输入:

    文件名为 poker.in

输入第一行为一个数字N,表示你有的扑克牌数;

接下来一行N个数字,数字在1到13之间。

输出:

文件名为 poker.out

一个数字,最小得分。

样例输入:

3

5 10 13

样例输出:

43

样例说明:

数据范围:
          30%数据 N<=100

100%数据满足1<=N<=10000.

就这破(水)题暴了我好久时间,其实是一道水题。想到这棵树的每个节点只可能有0个或者2个儿子(这很显然)。这不就是huffman的的特点吗!然而吾并没有往这上面想,其实这道题就是合并果子!想象题目中输入数据的第二行给出的就是N个字符的出现频率,这特么就是huffman!唉,破烂题目毁我一生!

#include <cstdio>
#include <algorithm>

const int maxn = 10005;

int n, a[maxn], b[maxn], head1, head2, tail2, ans, t, flag;

int main(void) {
    freopen("poker.in", "r", stdin);
    freopen("poker.out", "w", stdout);
    scanf("%d", &n);
    for (int i = 0; i < n; ++i) {
        scanf("%d", a + i);
    }
    std::sort(a, a + n);

    for (int i = 1; i < n; ++i) {
        t = 2147483647;
        flag = -1;
        if (head1 + 1 < n && t > a[head1] + a[head1 + 1]) {
            t = a[head1] + a[head1 + 1];
            flag = 0;
        }
        if (head1 < n && head2 < tail2 && t > a[head1] + b[head2]) {
            t = a[head1] + b[head2];
            flag = 1;
        }
        if (head2 + 1 < tail2 && t > b[head2] + b[head2 + 1]) {
            t = b[head2] + b[head2 + 1];
            flag = 2;
        }
        if (!flag) {
            head1 += 2;
        }
        else if (flag == 1) {
            ++head1;
            ++head2;
        }
        else {
            head2 += 2;
        }
        b[tail2++] = t;
        ans += t;
    }
    printf("%d\n", ans);
    return 0;
}
时间: 2024-07-30 15:53:12

[ZPG TEST 105] 扑克游戏【Huffman】的相关文章

程序日志--ios“考反应扑克游戏”程序

交代一下我做程序的工具:mac os x虚拟机10.9.3         Xcode6         百度^-^         参考书iPhone30天精通 总结与经验,还有遇到的问题,都在程序里面写出来了,看着长,其实从头往下看10分钟就全都搞懂了,我的注释很"白话". //  ViewController.h //  12.1 // //  Created by 李迪 on 15-7-28. //  Copyright (c) 2015年 李迪. All rights res

多人在线扑克游戏源码带服务端完整版

多人在线扑克游戏源码带服务端完整版,本项目源码是一套网络版的扑克牌项目源码,带服务器端源码,服务器端也是用java做的,打开游戏以后需要配置IP服务器端的IP和端口,服务端默认监听9999端口,客户端ip填写10.0.2.2,端口信息不用管直接点连接就可以连接到电脑上的服务端.项目源码注释比较丰富,可以研究一下里面的算法之类的.搭建这个服务端环境废了我半天劲,不知道是不是我运行的方法不对,打开前两个游戏客户端没有问题,打开第三个就开始直接强制退出.游戏没玩成所以没有截那部分的图.<ignore_

[“斗地主”的技巧:扑克游戏指导].孔维民.扫描版

第一章 概述 一.斗地主的渊源与沿革 二.斗地主的基本特点 三.输赢的大小更多受心态影响 第二章 游戏规则 一.3人一副牌的斗地主规则 二.4人两副牌的斗地主规则 三.敞牌明斗规则 第三章 叫牌——战略成就的基本保证 一.叫牌一定要谨慎 二.根据量化的牌点指标.牌型来叫牌 三.掉张小牌太多,即便牌力强,也不应博底牌叫牌 第四章 斗地主必须掌握基本的概率知识 一.斗地主的基本牌张的概率分布 二.根据概率的计算结果选择成功率比较高的打法 三.按照“概率×收益”的公式进行理性博弈 第五章 斗地主的核心

【Collections:集合工具类:扑克游戏】

package com.yjf.esupplier.common.test; import java.util.ArrayList; import java.util.Collections; /** * @author shusheng * @description 扑克游戏 * @Email [email protected] * @date 2018/12/18 17:37 */ public class PokerDemo { public static void main(String

德州扑克游戏

哇,好久好久没写东西啦... 这两天实现了一个简单的游戏引擎,可以发牌,可以比较两手牌的大小 由于最近都在倒腾Golang,所以用GO实现的.这阶段过后准备用这个引擎来实现一个简单的AI对战,现在先记录一下 接下来我假设你已经懂游戏规则和俗语了 首先是牌的储存,2~~A,一共13张牌,我用的是一个14位的二进制区间来储存的,比如2-A,将表示为:11111111111110,辣么第一位是干啥的呢,请继续看下面 这样的储存方式除了省空间外还有什么优势呢?我们顺子的判断为例:例如顺子10JQKA,在

网狐棋牌6.6完整源码+内核源码+105款游戏源码下载

本资源仅用于研究和学习,请勿用于商业用途,否则后果自负.请下载后24小时之内删除 资源来源于互联网,如果侵犯了您的权益,我们会第一时间删除. 网狐棋牌6.6,里面没有深海捕鱼,其它的还是比较全的,这个已经有网友验证了 我没有亲测,喜欢的朋友自己测试一下吧! 代码图: 开发环境:VS2003 + SQL Server 2005 + IIS 下载地址:自己百度下吧! 下载地址: http://www.yxkfw.com/thread-17-1-1.html 说明文档齐全: 积分数据库的创建 建库 1

自己设置的纸牌游戏(简单数组栈和队列的设计)

星期天小白与小婷约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏--"小猫钓鱼".游戏的规则是这样的:将一副扑克牌平均分成俩份,每人拿一份.小白先拿出手中的第一张扑克牌放在桌上,然后小婷也拿出手中的第一张扑克牌,并放在小白刚打出的扑克牌上面,就像这样俩人交替出牌.出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将俩张相同的牌以及中间所夹着的牌全部取走,并依次放到自己手中牌的末尾.当任意一个人的牌全部出完时,游戏结束,对手获胜! 现在,我为了方便测试只涉及一组数据,因为数据如果不对的

德州扑克AI WEB版

继续之前的德州扑克话题,上次的DOS界面确实没法看,我女朋友说这是什么鬼.哈哈,估计只有自己能玩了 这两天重构了一下界面,基于web服务器和浏览器来交互. 服务器和客户端之间用websocket通信,这种全双工长连接更方便服务器及时的将整个游戏数据向客户端推送. 这篇随笔主要记录一下做前端界面的时候遇到的一些坑,至于德州扑克游戏的具体逻辑以及AI的逻辑可以查看我前两篇随笔 说道web服务器,go语言对这方面封装的非常好,用起来太爽了.而使用websocket,我们需要用到google提供的一个w

android猜猜红桃A游戏源码

一个简单的猜扑克游戏,很适合初学者,点击TextView扑克由反面变为正面,未点击的TextView有透明效果,点击再玩一次按钮,运行洗牌程序undefined <ignore_js_op><ignore_js_op> 详细说明:http://android.662p.com/thread-876-1-1.html android猜猜红桃A游戏源码,布布扣,bubuko.com