1736. 扑克游戏 (Standard IO)

Time Limits: 1000 ms Memory Limits: 128000 KB

Description

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

  

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

  1. 当你把点数为i的扑克牌放在权值为j的点上,那么你会得到i*j的分数。

  2. 当你把一个扑克牌放在一个节点上,那么你就不能把别的扑克牌放在这个节点以及这个节点的子树上。

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

Input

  文件名为 poker.in

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

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

Output

  文件名为 poker.out

  一个数字,最小得分。

Sample Input

3

5 10 13

Sample Output

43

Data Constraint

Hint

【样例说明】

  

【数据范围】

  30%数据 N<=100

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

题解

这是今天做的第四道哈夫曼树专题了

总结一下

解法大同小异,只是换个方式问而已

类似这道题,题目说得分是 i * j 其实就是哈夫曼树,模型转换一下就好了

代码

#include<iostream>
#include<iostream>
#include<cstdio>
#define INF 2147483647
#define N 20000
using namespace std; long long dui[N*2+1],top;
void add(long x)
{ long now;
dui[++top]=x;
for(now=top;dui[now/2]>dui[now]&&now>1;now/=2)
swap(dui[now],dui[now/2]);
}
long qu()
{ long ans=dui[1],now;
bool t=false;
dui[1]=INF;
now=1;
while(!t){
t=true;
if(now*2==top||dui[now*2]<dui[now*2+1]){
if(dui[now]>dui[now*2]){
swap(dui[now],dui[now*2]);
now=now*2;
t=false;
}
}else if(now*2+1<=top)
if(dui[now]>dui[now*2+1]){
swap(dui[now],dui[now*2+1]);
now=now*2+1;
t=false;
}
}
return ans;
} int main()
{ long n,m,i,q;
long long ans=0;
scanf("%ld",&n);
for(i=1;i<=n;i++){
scanf("%ld",&q);
add(q);
}
for(i=1;i<n;i++){
q=qu()+qu();
ans+=q;
add(q);
}
printf("%lld\n",ans);
return 0;
}

ps:

看过我其他博文的有没有感觉代码很熟悉

没错,就是合并果子

最新文章

  1. 复制物料(参考的MMCC想法)
  2. 脚本 用 scp 拷贝文件
  3. FZU2219 StarCraft(哈夫曼树)
  4. JDK结构介绍
  5. C++多线程框架-----Mutex互斥和Sem信号量
  6. 数据库获取前N条记录SQL Server与SQLite的区别
  7. The Basics
  8. 下载youku视频(python3)
  9. 带&rsquo;*&rsquo;号字符串的匹配
  10. hdu 2768
  11. EOF 空格问题
  12. BCTF Web Code–考脑洞,你能过么?
  13. PIE使用阴影后的背景透明方法
  14. JedisConnectionException: Unexpected end of stream.
  15. mysql5.x安装脚本
  16. nginx 高并发优化参数
  17. 【vim】缩写 :ab [缩写] [要替换的文字]
  18. myeclipse10配置maven
  19. 前端(十):使用redux管理数据
  20. “C++动态绑定”相关问题探讨

热门文章

  1. Git教程 - 远程仓库
  2. 文本输入框input将输入转换为统一大小写
  3. android基于MVP小说网络爬虫、宝贝社区APP、仿虎扑钉钉应用、滑动阴影效果等源码
  4. android优化中国风应用、完整NBA客户端、动态积分效果、文件传输、小说阅读器等源码
  5. JavaScript设计模式一:工厂模式和构造器模式
  6. 吴裕雄--天生自然HTML学习笔记:HTML 标题
  7. vue项目实例-常用标签
  8. estt
  9. Java Servlet XML文件配置
  10. Eclipse添加comment