Codevs 4909 寂寞的堆
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 寂寞的堆相关推荐
- codevs 2977 二叉堆练习1x
时间限制: 10 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题目描述 Description 已知一个二叉树,判断它是否为二叉堆(小根堆) 输入描述 Input Descri ...
- CodeVS 1063 合并果子
http://codevs.cn/problem/1063/ 堆结构的上手测试题. 之前学堆的时候写过一个模板,直接拿过来用. #include<cstdio> #include<i ...
- codevs 2879 堆的判断
codevs 2879 堆的判断 http://codevs.cn/problem/2879/ 题目描述 Description 堆是一种常用的数据结构.二叉堆是一个特殊的二叉树,他的父亲节点比两个儿 ...
- 2977,3110 二叉堆练习1,3——codevs
二叉堆练习1 题目描述 Description 已知一个二叉树,判断它是否为二叉堆(小根堆) 输入描述 Input Description 二叉树的节点数N和N个节点(按层输入) 输出描述 Outpu ...
- 2977 二叉堆练习1 codevs
题目描述 Description 已知一个二叉树,判断它是否为二叉堆(小根堆) 输入描述 Input Description 二叉树的节点数N和N个节点(按层输入) 输出描述 Output Descr ...
- codevs 2291 糖果堆
题目描述 Description [Shadow 1]第一题 WJMZBMR买了很多糖果,分成了N堆,排成一列.WJMZBMR说,如果Shadow能迅速求出第L堆到第R堆一共有多少糖果,就把这些糖果都 ...
- codevs 2291 糖果堆 x
题目描述 Description [Shadow 1]第一题 WJMZBMR买了很多糖果,分成了N堆,排成一列.WJMZBMR说,如果Shadow能迅速求出第L堆到第R堆一共有多少糖果,就把这些糖果都 ...
- codevs 1052:地鼠游戏
http://codevs.cn/problem/1052/ 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不但学习刻苦,而且善于 ...
- CodeVs天梯钻石Diamond题解
title: CodeVs天梯之Diamond date: 2017-12-28 tags: 天梯 CodesVs categories: OI CodeVs刷题攻略之Diamond 2018.1.1 ...
- codevs 1766 装果子
codevs 1766 装果子 题目描述 Description 果园里有n颗果树,每棵果树都有一个编号i(1≤i≤n).小明已经把每棵果树上的果子都摘下来堆在了这棵树的下方,每棵树下方的果子体积为a ...
最新文章
- 堆、栈、方法区、静态代码块---Java
- Dom4j和Xpath(转)
- Smzzl with Greedy Snake 模拟-贪心-阅读理解
- 安卓源码 代号,标签和内部版本号
- java 集成kafka单机版 适配jdk1.8
- visualstudio学习
- AsnycTask的内部的实现机制
- 病毒或木马修改注册表,导执可执行文件无法执行的处理办法
- Nashorn Multithreading and MT-safety
- 公务员计算机职称有哪些,2017职称考试有哪些
- AAC的ADTS头解析
- 华硕笔记本FH5900VQ 如何利用Winflash更新BIOS
- uniapp微信小程序获取用户登录后openid
- MarkdownPad2 使用教程
- Linux --------- 远程操作工具
- STM32兴趣篇二:模拟汽车OBD接口处的CAN收发信号实验
- 数据可视化项目【三】数据切换效果模块
- Altium Designer 19.1.18 - 更改铺铜的透明度
- python 处理csv文件 一个简单的数据处理任务
- 【obs】导入qrc资源到vs工程