codevs 4909 寂寞的堆(写的好丑0.0)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define ll long long
using namespace std;
ll n,num,ans,hou[10000000],f[10000000],c[10000000],size;
struct node
{
    ll l,r,data;
}t[10000000];
void Hou(ll p)
{
    if(p)
      {
          Hou(t[p].l);
          Hou(t[p].r);
          if(t[p].data)
            hou[++num]=t[p].data;
      }
}
ll lon()
{
    ll i,x;
    for(i=1;i<=num;i++)
      {
          x=hou[i];
          if(x>c[size])
            {
                c[++size]=x;
                continue;
          }
        int mm,l=0,r=size,ans;
        while(l<=r)
          {
              mm=(l+r)/2;
              if(x>c[mm])
                {
                    ans=mm;
                    l=mm+1;
              }
            else r=mm-1;
          }
        c[ans+1]=x;
      }
    return size;
}
int main()
{
    scanf("%lld",&n);
    ll x;
    for(ll i=1;i<=n;i++)
      {
          ll sum=1;
        while(~scanf("%lld",&x))
            {
              ++num;
              sum++;
              t[num].data=x;
              t[num].l=num*2;
              t[num].r=num*2+1;
              if(sum>pow(2,i-1))break;
          }
      }
    num=0;
    Hou(1);
    ans=lon();
    printf("%lld\n",num-ans);
    return 0;
}
时间: 2024-10-12 21:18:56

codevs 4909 寂寞的堆(写的好丑0.0)的相关文章

寂寞的堆

[题目描述] 我们称满足下列两个条件的满二叉树为寂寞的堆. (1)对于堆中任意一个儿子节点,其Key值都不大于父亲节点的Key值: (2)对于堆中任意一个非叶子节点,其左子树中任意节点的Key值都不能大于其右子树任意节点的Key值: 现给定你一棵满二叉树,询问最少修改多少个节点的Key值,才能使它变成寂寞的堆. [输入描述] 输入第一行是一个数n,表示树共n层: 后面n行,每一行表示该层所有叶子节点的值: [输出描述] 输出一个数,表示最少修改的节点数. [样例输入] 2 2 1 2 [样例输出

C#写爬虫,版本V1.0

之前看了Sql Server中的基本数据类型,发现image这个类型还是比较特殊的. 于是乎就做了一个将图片以二进制流形式存储的程序http://www.cnblogs.com/JsonZhangAA/p/5568575.html,现在如果我想批量ed存储网上一个网站的图片,难道我要手写n多地址吗?显然这是不可取的,针对这种情况,就用C#写了一个简单的爬虫,我们所爬的对象是天文网http://www.tianwenwang.cn/ 程序的原理是利用WebRequest和WebResponse来相

写几十行代码,来一场无鼠标编程之旅,看看who is e———(HTML5:HBuilder5.0.0)

*注:本教程针对HBuilder5.0.0*创建HTML结构: h 8 (敲h激活代码块列表,按8选择第8个项目,即HTML代码块,或者敲h t Enter)中途换行: 'Ctrl+Enter'设置charset: m e 6 Enter引用外部js: s 2 Enter 'Ctrl+Enter'创建js区块: s Enter创建函数: f u n 3 (或者 f u n n Enter)为函数命名:W h o i s E跳转到函数末尾: End 'Alt+[' ↓ 'Ctrl+Enter' (

【原创】自己动手写工具----XSmartNote [Beta 3.0]

一.前面的话 在动笔之前,一直很纠结到底要不要继续完成这个工具,因为上次给它码代码还是一年多之前的事情,参考自己动手写工具----XSmartNote [Beta 2.0],这篇博文里,很多园友提出了宝贵的意见.最后决定吸收园友的建议把这个工具重构一下.首先给它换了个名 称,XSmartNote.因为各种自身的原因,并没有完成这个工具的基本功能,只是实现了基本的框架.最近有点时间就搞了一下,权当做打下基础.本来想用B/S结构来重新搞一下,毕竟园子里有很多大牛都是专注于ASP.NET MVC,但仔

在JS中关于堆与栈的认识function abc(a){ a=100; } function abc2(arr){ arr[0]=0; }

平常我们的印象中堆与栈就是两种数据结构,栈就是先进后出:堆就是先进先出.下面我就常见的例子做分析: main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() { int b; 栈 char s[] = "abc"; 栈 char *p2; 栈 char *p3 = "123456"; 123456\0在常量区,p3在栈上. static int c =0: 全局(静态)初始化区 p1 = (char *)malloc(1

写一个脚本,实现判断10.0.0.0/24网络里,当前在线用户的IP有哪些

#!/bin/bash #检测一个c的ip中当前有哪些IP在线 for i in `seq 1 254`;do #{} 开启并发,开启多线程 { IP=10.0.0.$i ping -c1 -w 1 $IP >/dev/null #判断ip是否在线,把在线的ip输出到指定文本并显示到屏幕 if [ $? -eq 0 ];then echo "Host $IP is ok" echo $IP >>/tmp/ip.txt fi # &把命令放入后台 } &

[Codevs 1230]元素查找(手写哈希表)

题目连接:http://codevs.cn/problem/1230/ 说白了就是要我们自己手写一个哈希表的数据结构来实现添加和查找功能,map也能直接过(我第一次写就是用map骗AC的) 提一下个人理解的哈希表的实现(下面说的是线性寻址法),如果有误还请各位大神不吝指教 用一个数组模拟哈希表,函数f(x)=数字x在哈希表中出现的下标的最小可能值,一般f(x)=x mod t,t就是哈希表的长度 下面就是一个哈希表的示例,如果遍历哈希表时指针走出了哈希表的终点,就进入起点重新遍历 对于每次向哈希

codevs 3110 二叉堆练习3

3110 二叉堆练习3 http://codevs.cn/problem/3110/ 题目描述 Description 给定N(N≤500,000)和N个整数(较有序),将其排序后输出. 输入描述 Input Description N和N个整数 输出描述 Output Description N个整数(升序) 样例输入 Sample Input 5 12 11 10 8 9 样例输出 Sample Output 8 9 10 11 12 数据范围及提示 Data Size & Hint 对于3

codevs 必做:堆:1245、2879 并查集:1069、1074、1073

1245 最小的N个和 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 有两个长度为 N 的序列 A 和 B,在 A 和 B 中各任取一个数可以得到 N^2 个和,求这N^2 个和中最小的 N个. 输入描述 Input Description 第一行输入一个正整数N:第二行N个整数Ai 且Ai≤10^9:第三行N个整数Bi,且Bi≤10^9 输出描述 Output Description 输出仅一行,包