ZeptoLab Code Rush 2015_B - Om Nom and Dark Park

B - Om Nom and Dark Park
Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u

Description

Om Nom 是一个游戏“Cut the Rope”中的主要角色,他是一个聪明的小怪兽,他非常喜欢去访问公园里其他地方的朋友。然而,到了晚上,昏暗的灯光让他非常害怕,现在他请你来帮助他。

这个公园里有 2^(n + 1) - 1 个地方,部分地方之间有路相连接,这个形状是一颗深度为n的完全二叉树。整个公园的入口在位置1,出口在位置2^n, 2^n + 1, ..., 2^(n + 1) - 1,出口都是通向Om Nom朋友家里的。对任何位置i(2 ≤ i < 2^(n + 1),都有一条路通向位置i div 2,因此,从入口位置1出发,只要经过n条道路,就可以到达出口。

为了在夜晚照亮道路,公园的管理者决定在道路上安装路灯。位置i到位置i div 2的道路上有  ai   个路灯。
Om Nom喜欢统计路上的路灯数量,他非常害怕公园里的蜘蛛,因为他决定不走那些他认为不够亮的道路。他想要使得他到朋友家的任何一条路径上的路灯总数都是一样的。
现在,请你在某些道路上添加最少的路灯,使得从位置1出发到任何出口的路径上的路灯数量都是相等的。

Input

输入第一行为n,表示树的深度。(1<=n<=10)。
接下来一行2^(n+1)-2个非负整数,分别表示a2,a3,a4..a2^(n+1)-1,表示初始的时候在每条路上的路灯数量。ai表示的是位置i到位置i div 2之间的路灯数量。所有ai不超过整数100。

Output

输出最少需要添加的路灯的数量,才能使得Om Nom感觉安全。

Sample Input

2
1 2 3 4 5 6

Sample Output

5

Hint

下图是样例的解释,绿色的代表添加的路灯。

思路:从底层开始,父亲的值为左右孩子的min,ans+左右孩子-父亲的值就是结果


代码
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <cmath>
#include <set>
#include <queue>
#include <algorithm>
#include <vector>
using namespace std;
#define esp  1e-8
const double PI = acos(-1.0);
const int inf = 1000000005;
const long long mod = 1000000007;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
//freopen("out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中






int main(){
int n;
int num[5000];
int sum[5000];
int base;
scanf("%d", &n);
base = 1;
for(int i = 1; i <= n; i++)
base*=2;
sum[0] = 0;
int _max;
for(int i = 2; i <= base*2-1; i++){
scanf("%d",&num[i]);
sum[i] = sum[i/2]+num[i];
_max = max(_max,sum[i]); 
}
for(int i = base; i <= base*2-1; i++){
sum[i] = _max-sum[i];
}
int ans = 0;
while(base > 1){
for(int i = base ; i < base*2; i+=2){
sum[i/2] = min(sum[i],sum[i+1]);
ans+=sum[i]-sum[i/2];
ans+=sum[i+1]-sum[i/2];
}
base/=2;
}
printf("%d\n",ans);
return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
HTML5游戏是使用HTML5技术开发的游戏,具有跨平台、无需安装、可在线玩等优点。以下是一些经典的HTML5游戏及其源码分析: 1. Flappy Bird Flappy Bird是一款非常简单却又极具挑战性的游戏,由越南独立开发者Dong Nguyen开发。玩家需要控制小鸟穿过一系列管道,避免碰到管道或者掉落。游戏的源码非常简单,使用了HTML5的canvas和JavaScript来实现。 2. Cut the Rope Cut the Rope是一款益智游戏,由俄罗斯游戏开发公司ZeptoLab开发。玩家需要通过剪断绳子,让糖果掉落到小怪物Om Nom的嘴里。游戏使用了HTML5的canvas和JavaScript来实现,通过动态生成DOM元素来实现游戏场景的渲染。 3. Angry Birds Angry Birds是一款非常流行的物理学游戏,由芬兰游戏开发公司Rovio Entertainment开发。玩家需要控制一群愤怒的小鸟,通过弹弓将它们发射到敌人的堡垒里,摧毁敌人并拯救自己的鸟蛋。游戏使用了HTML5的canvas和JavaScript来实现,通过动态生成DOM元素来实现游戏场景的渲染。 4. 2048 2048是一款非常流行的数字游戏,由意大利开发者Gabriele Cirulli开发。玩家需要通过滑动数字方块,让相同数字的方块合并在一起,最终得到2048这个数字。游戏的源码非常简单,使用了HTML5的canvas和JavaScript来实现。 这些经典的HTML5游戏都使用了HTML5的canvas和JavaScript来实现,通过动态生成DOM元素来实现游戏场景的渲染。对于想学习HTML5游戏开发的初学者,可以通过阅读这些游戏的源码来学习HTML5和JavaScript的使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值