2016级算法期末上机-C.简单·Bamboo's Fight with DDLs III
简单·Bamboo's Fight with DDLs III
分析
一句话:贪心,简单哈夫曼应用,要求的其实是所有结点的值与权值的乘积之和,也就是带权路径长。
可以理解为非叶子节点的权值的和,这里的权值就是零食个数
样例分析: 1 2 3 --- 1 2->3 3 3->6 3+6=9 所以得到6的同学是没有最后相加
因为只需要求最后的结果,不需要建树,可以用优先队列实现,每次挑权值最小的两个相加,将生成的新的结点进入到优先队列中,每次都要将pop的结点的权值加入ans中,直到队列为空
博客  http://www.voidcn.com/article/p-zsktmfnf-nm.html 对于带权路径和讲的比较形象
代码样例
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
using namespace std;
int main()
{
	int n,m;
	while(~scanf("%d",&n))
    {
        priority_queue<int, vector<int> ,greater<int> >Q;//从小到大
        for(int i  = 0;i<n;i++)
        {
            scanf("%d",&m);
            Q.push(m);
        }
        int ans = 0; int t1,t2,temp;
        while(Q.size()>1)
        {
            t1 = Q.top();Q.pop();
            t2 = Q.top();Q.pop();
            temp = t1+t2;
            ans +=temp;
            Q.push(temp);
        }
        printf("%d\n",ans);
    }
}
2016级算法期末上机-C.简单·Bamboo's Fight with DDLs III的更多相关文章
- 2016级算法期末上机-A.简单·Bamboo's Fight with DDLs I
		简单·Bamboo's Fight with DDLs I 分析 一句话:要装满的完全背包问题. 对比完全背包只有一点要改变:初始化为负无穷 传送门: https://buaacoding.cn/pr ... 
- 2016级算法期末上机-G.中等·Bamboo's Fight with DDLs II
		中等·Bamboo's Fight with DDLs II 分析 一句话:给定字符串,求最长回文子序列长度,动态规划LCS思想的进阶应用 具体思路如下: 对于任意字符串,如果头尾字符相同,那么字符串 ... 
- 2016级算法期末上机-H.难题·AlvinZH's Fight with DDLs III
		1119 AlvinZH's Fight with DDLs III 思路 难题,最小点覆盖. 分析题意,某一个任务,既可以在笔记本A的 \(a\) 模式下完成,也可以在笔记本B的 \(b\) 模式下 ... 
- 2016级算法期末上机-D.简单·AlvinZH's Fight with DDLs I
		1117 AlvinZH's Fight with DDLs I 思路 简单题,动态规划. 本题与期末练习赛B题很相似,而且更为简单些.简化问题:在数字序列上取数,不能取相邻的数. DP数组定义,dp ... 
- 2016级算法期末上机-B.简单·ModricWang's Fight with DDLs I
		1124 ModricWang's Fight with DDLs I 思路 这道题本质上就是一个多项式求值,题目中的n需要手动算一下,单位复根可以根据复数的性质来求,即\(e^{i\pi}+1=0\ ... 
- 2016级算法期末上机-I.难题·ModricWang's Fight with DDLs III
		1126 ModricWang's Fight with DDLs III 思路 由于题目中已经说明了时间经过了正无穷,因此初始位置是不重要的,并且每条边.每个点的地位是均等的.因此到达每个点的概率就 ... 
- 2016级算法期末上机-F.中等·AlvinZH's Fight with DDLs II
		1118 AlvinZH's Fight with DDLs II 思路 中等题,贪心. 理解题意,每次攻击中,可以使某个敌人生命值-1,自己生命值减去∑存活敌人总攻击力. 贪心思想,血量少攻击高的要 ... 
- 2016级算法期末上机-E.中等·ModricWang's Fight with DDLs II
		1125 ModricWang's Fight with DDLs II 思路 圆内被划分部分数的计算方式如下: 圆内部的每一个交点都使得总份数增加了一:除此之外,每一根直线段最后抵达圆周时,总份数也 ... 
- 北航2018级算法期末上机实录随笔1st
		简单记录下题目类型和做题情况,理性复习同时也希望提供一些参考 题目描述 共计八个题目,按照助教的划分,题目分类如下 一个签到(二分查找),两个板子(活动选择.KMP(洛谷kmp模板题)),一个板子变形 ... 
随机推荐
- sqlconnection     dispose()与close()的区别
			区别: IDispose接口可以通过Using关键字实现使用后立刻销毁,因此,Dispose适合只在方法中调用一次SqlConnection对象,而Close更适合SqlConnection在关闭后可 ... 
- 基于Dcoker的ZooKeeper集群的搭建
			背景 原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 Docker 的镜像了, 于是就尝试了一下, 发现真是爽 ... 
- docker 容器创建参数错误记录
			sudo docker ps -a -q sudo docker ps -a|cutawk '{print $1}' #删除前八条 sudo docker ps -a -q|head -n |xarg ... 
- C语言压缩/解压缩
			一.简介 Lzlib 压缩库提供了在内存中的 LZMA 压缩和解压算法功能,包括对数据进行完整性检查.压缩格式是 lzip 参考: http://blog.csdn.net/damenhanter/a ... 
- Groovy使用List集合
			获取List集合中的元素 def lst = [1,3,4,1,8,9,2,6] println lst[-1] println lst[-2] 输出结果: 输出: 6 2 使用Range(范围)对象 ... 
- 自旋构造(更新)c#
			int x; void MultiplyXBy (int factor) { var spinWait = new SpinWait(); while (true) { int snapshot1 = ... 
- java反射简单实例
			这篇博友的总结的反射知识点是比较全面的 http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html 下面介绍我用反射做的两个功能 ... 
- JS+MySQL获取 京东 省市区 地区
			采集了一下JD的省市区地区 (非常简单,只是做个记录) 1.建表:account_area 2.进入页面: https://reg.jd.com/reg/company 在浏览器(Firefox) ... 
- POJ1269 Intersecting Lines                                                                                            2017-04-16 19:43             50人阅读              评论(0)              收藏
			Intersecting Lines Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 15478 Accepted: 67 ... 
- linux squid
			iptables -F iptables -F -t nat 网关 iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -o eth0 -j MASQUERAD ... 
