热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

【2017.10.2】菌落合并

【题目描述】小M培养了n个菌落。其中每个菌落有质量和颜色两种属性,颜色只可能为紫色或红色。小M想把所有的菌落合并成一个菌落。因为合并的过程非常费劲,小M每天只能进行一次合并,整个过

【题目描述】
小 M 培养了 n 个菌落。其中每个菌落有质量和颜色两种属性,颜色只可能为紫色或红色。小 M 想把所有的菌落合并成一个菌落。因为合并的过程非常费劲,小 M 每天只能进行一次合并,整个过程需要进行 n − 1 天。一次合并会将两个菌落变成一个菌落。如果原来两个菌落的颜色相同,两个菌落会进行融合,新的菌落质量为原来两个菌落质量之和,颜色不变;如果原来两个菌落的颜色不同,两个菌落会进行战斗,新的菌落质量为原来两个菌落质量之差,颜色为质量较大的那个菌落。需要特殊说明的是,中间过程中如果产生了质量为 0 的菌落,这个菌落也需要参与后续合并而不能直接舍弃;可以证明将质量为 0 的菌落视为紫色或红色都不影响后续的计算。
每天的合并结束后,小 M 都需要喂养当前的每个菌落。对于一个质量为 w 的菌落,小 M 需要花费 w^2 单位的能量对它进行一天的喂养。
小 M 希望你帮他求出菌落的最佳合并顺序,使得喂养所消耗的总能量最少。你只需要输出所需要的最小能量即可。

【输入格式】
从文件 germ.in 中读入数据。
输入的第一行包含一个正整数 T,表示数据的组数。对于所有的测试点,保证 T = 10。
对于每组数据,第一行包含一个正整数 n,表示最初菌落的个数。
接下来 n 行,每行包含一个正整数和一个字符串,表示这个菌落的质量和颜色。若字符串为 743481,表示这个菌落是紫色;若字符串为 8B0012,表示这个菌落是红色。保证不会出现其他的字符串,保证给出的正整数不超过 10 6 。

【输出格式】
输出到文件 germ.out 中。
对于每组数据,输出一行一个整数,表示消耗的最少总能量。注意这个值可能很大,请注意选用合适的数据类型来存储它

【样例输入】
10
4
3 743481
20 743481
7 8B0012
18 743481
3
10 8B0012
13 743481
13 8B0012
5
14 743481
16 8B0012
2 8B0012
9 8B0012
8 8B0012
4
11 8B0012
15 8B0012
4 8B0012
8 8B0012
2
11 8B0012
6 8B0012
4
8 8B0012
16 8B0012
16 8B0012
3 8B0012
2
20 743481
17 743481
3
6 8B0012
20 743481
13 8B0012
4
19 8B0012
15 743481
4 8B0012
1 743481
2
11 8B0012
14 8B0012

【样例输出】
2238
200
980
2688
289
3467
1369
86
107
625

【样例解释】
对于样例中的第一组数据,最优的合并方案如下:
1. 合并紫色的 20 和红色的 7,得到紫色的 13;喂养的能量花费为 3^2 +13^2 +18^2 = 502。
2. 合并紫色的 13 和紫色的 3,得到紫色的 16;喂养的能量花费为 16^2 +18^2 = 580。
3. 合并紫色的 16 和紫色的 18,得到紫色的 34;喂养的能量花费为 34^2 = 1156。
可以证明没有更优的方案。

【子任务】
n<=10。

同色的1~10就是个反例。

 

 


推荐阅读
  • 本文介绍了如何通过创建自定义 XML 文件来修改 Android 中 Spinner 的项样式,包括颜色和大小的调整。 ... [详细]
  • MKVToolNix 37.0.0 正式发布:增强的 MKV 格式处理工具
    MKVToolNix 37.0.0 版本现已推出,这是一款专为处理 Matroska (MKV) 格式的强大工具。它能够将各种视频、音频及字幕格式整合进 MKV 文件中。本次更新带来了新的功能和多项 Bug 修复。 ... [详细]
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 本文档旨在提供C语言的基础知识概述,涵盖常量、变量、数据类型、控制结构及函数定义等内容。特别强调了常量的不同类型及其在程序中的应用,以及如何正确声明和使用函数。 ... [详细]
  • 如何为PDF文档添加水印?简单步骤实现
    为了增强PDF文档的安全性和版权保护,添加水印是一个有效的方法。本文将介绍如何通过专业软件或在线工具轻松为PDF文档添加水印,确保您的文档在共享时仍能保持其独特性和安全性。 ... [详细]
  • Hadoop集群搭建:实现SSH无密码登录
    本文介绍了如何在CentOS 7 64位操作系统环境下配置Hadoop集群中的SSH无密码登录,包括环境准备、用户创建、密钥生成及配置等步骤。 ... [详细]
  • Git版本控制基础解析
    本文探讨了Git作为版本控制工具的基本概念及其重要性,不仅限于代码管理,还包括文件的历史记录与版本切换功能。通过对比Git与SVN,进一步阐述了分布式版本控制系统的独特优势。 ... [详细]
  • 如何解决AU输出声音沉闷的问题?
    探讨AU输出声音沉闷的原因及解决方案,包括设备选择、软件设置等多方面建议。 ... [详细]
  • 使用R语言进行Foodmart数据的关联规则分析与可视化
    本文探讨了如何利用R语言中的arules和arulesViz包对Foodmart数据集进行关联规则的挖掘与可视化。文章首先介绍了数据集的基本情况,然后逐步展示了如何进行数据预处理、规则挖掘及结果的图形化呈现。 ... [详细]
  • MyBatis入门指南:环境搭建与基础配置详解
    本文详细介绍了MyBatis的基础配置流程,包括在Maven项目中添加MyBatis依赖、IDEA中配置数据库连接、导入SQL脚本以及编写mybatis-config.xml配置文件等关键步骤。 ... [详细]
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
  • IntelliJ IDEA配置微服务启动显示
    通过编辑IntelliJ IDEA的workspace.xml文件,可以实现微服务启动对象的显示。具体步骤包括定位并修改workspace.xml中的RunDashboard部分。 ... [详细]
  • 版权所有 © 2015 CSDN博客,保留所有权利。本文档详细介绍了使用C语言编写计算圆柱体表面积的程序,包括代码实现及运行结果。 ... [详细]
  • 本文详细介绍了如何在VSCode环境中配置Prettier工具以支持TypeScript项目,同时结合ESLint实现代码风格的一致性和自动化格式化。 ... [详细]
  • 本文总结了在多人协作开发环境中使用 Git 时常见的问题及其解决方案,包括错误合并分支的处理、使用 SourceTree 查找问题提交、Git 自动生成的提交信息解释、删除远程仓库文件夹而不删除本地文件的方法、合并冲突时的注意事项以及如何将多个提交合并为一个。 ... [详细]
author-avatar
加州旅馆在南京_380
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有