4909 寂寞的堆
时间限制: 1 s
空间限制: 8000 KB
题目等级 : 大师 Master
题目描述 Description
堆,是一种神奇的数据结构 不寂寞的堆,是一棵满二叉树,其儿子节点的key值都不大于父亲节点的key值 久而久之,不寂寞的堆寂寞了,它不满足于自己这无聊又乏味的性质,于是它提出要求,在自己本身性质的基础上,对于堆中任意一个非叶子节点,它的左子树中任意节点的key值都不能大于其右子树任意节点的key值 我们称满足上述两个条件的满二叉树为寂寞的堆 给定你一棵满二叉树,询问最少修改多少个节点的key值,才能使它变成寂寞的堆
输入描述 Input Description
第一行是层数 表示完全二叉树共n层
之后每一行表示该i层所有叶子节点的值
可能有数据稍大 推荐开long long
输出描述 Output Description
最小的k值
样例输入 Sample Input
2
2
1 2
样例输出 Sample Output
0
数据范围及提示 Data Size & Hint
dp
n<=18
对于30%的数据 n<=2
对于60%的数据 n<=10

/*
由树用后序遍历搞成序列.
然后求LIS(nlogn).
*/
#include<cstdio>
#include<algorithm>
#include<cmath>
#define MAXN 200001
#define LL long long
using namespace std;
struct data{LL lc,rc;}tree[MAXN*4];
LL n,s[MAXN],a[MAXN],tot,ans,cut,len,c[MAXN];
LL read()
{LL x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();return x*f;
}
void slove(LL x)
{if(tree[x].lc) slove(tree[x].lc);if(tree[x].rc) slove(tree[x].rc);s[++tot]=a[x];
}
void erfenlis()
{for(LL i=1;i<=tot;i++)if(s[i]>=c[len]) c[++len]=s[i];else{LL p=upper_bound(c+1,c+len+1,s[i])-c;c[p]=s[i];}
}
int main()
{LL x,z;n=read();for(LL i=1;i<=n;i++){for(LL j=1;j<=pow(2,i-1);j++){cut++;a[cut]=read();if(j%2==1) tree[cut/2].lc=cut;else tree[cut/2].rc=cut;}}slove(1);erfenlis();printf("%lld",cut-len);return 0;
}

Codevs 4909 寂寞的堆相关推荐

  1. codevs 2977 二叉堆练习1x

    时间限制: 10 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题目描述 Description 已知一个二叉树,判断它是否为二叉堆(小根堆) 输入描述 Input Descri ...

  2. CodeVS 1063 合并果子

    http://codevs.cn/problem/1063/ 堆结构的上手测试题. 之前学堆的时候写过一个模板,直接拿过来用. #include<cstdio> #include<i ...

  3. codevs 2879 堆的判断

    codevs 2879 堆的判断 http://codevs.cn/problem/2879/ 题目描述 Description 堆是一种常用的数据结构.二叉堆是一个特殊的二叉树,他的父亲节点比两个儿 ...

  4. 2977,3110 二叉堆练习1,3——codevs

    二叉堆练习1 题目描述 Description 已知一个二叉树,判断它是否为二叉堆(小根堆) 输入描述 Input Description 二叉树的节点数N和N个节点(按层输入) 输出描述 Outpu ...

  5. 2977 二叉堆练习1 codevs

    题目描述 Description 已知一个二叉树,判断它是否为二叉堆(小根堆) 输入描述 Input Description 二叉树的节点数N和N个节点(按层输入) 输出描述 Output Descr ...

  6. codevs 2291 糖果堆

    题目描述 Description [Shadow 1]第一题 WJMZBMR买了很多糖果,分成了N堆,排成一列.WJMZBMR说,如果Shadow能迅速求出第L堆到第R堆一共有多少糖果,就把这些糖果都 ...

  7. codevs 2291 糖果堆 x

    题目描述 Description [Shadow 1]第一题 WJMZBMR买了很多糖果,分成了N堆,排成一列.WJMZBMR说,如果Shadow能迅速求出第L堆到第R堆一共有多少糖果,就把这些糖果都 ...

  8. codevs 1052:地鼠游戏

    http://codevs.cn/problem/1052/ 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不但学习刻苦,而且善于 ...

  9. CodeVs天梯钻石Diamond题解

    title: CodeVs天梯之Diamond date: 2017-12-28 tags: 天梯 CodesVs categories: OI CodeVs刷题攻略之Diamond 2018.1.1 ...

  10. codevs 1766 装果子

    codevs 1766 装果子 题目描述 Description 果园里有n颗果树,每棵果树都有一个编号i(1≤i≤n).小明已经把每棵果树上的果子都摘下来堆在了这棵树的下方,每棵树下方的果子体积为a ...

最新文章

  1. 堆、栈、方法区、静态代码块---Java
  2. Dom4j和Xpath(转)
  3. Smzzl with Greedy Snake 模拟-贪心-阅读理解
  4. 安卓源码 代号,标签和内部版本号
  5. java 集成kafka单机版 适配jdk1.8
  6. visualstudio学习
  7. AsnycTask的内部的实现机制
  8. 病毒或木马修改注册表,导执可执行文件无法执行的处理办法
  9. Nashorn Multithreading and MT-safety
  10. 公务员计算机职称有哪些,2017职称考试有哪些
  11. AAC的ADTS头解析
  12. 华硕笔记本FH5900VQ 如何利用Winflash更新BIOS
  13. uniapp微信小程序获取用户登录后openid
  14. MarkdownPad2 使用教程
  15. Linux --------- 远程操作工具
  16. STM32兴趣篇二:模拟汽车OBD接口处的CAN收发信号实验
  17. 数据可视化项目【三】数据切换效果模块
  18. Altium Designer 19.1.18 - 更改铺铜的透明度
  19. python 处理csv文件 一个简单的数据处理任务
  20. 【obs】导入qrc资源到vs工程

热门文章

  1. 短诗整理5—景物+记事
  2. 解决 pq: SSL is not enabled on the server
  3. 新兴基金经理凯瑟琳·伍德ARKK基金在 2022 年初遭受新的打击
  4. GameFramework框架 (一) 框架简介
  5. 2D基本知识入门学习
  6. redis 结合 spring
  7. Sematic-UI安装方法:
  8. 21天打卡活动 leetcode 301
  9. python程序设计从基础到开发课后题答案夏敏捷_Python程序设计——从基础到开发...
  10. Ps简单的墨笔画制作