• 叶子节点测试hdu 4217 线段树


    发一下牢骚和主题无关:

        http://acm.hdu.edu.cn/showproblem.php?pid=4217

        题目粗心: t 组测试,每组测试有 n 个数(1~n),有 k 次循环,每次取出第k小的数,求所有取出的数字之和。

        每日一道理
    这浓浓的母爱使我深深地认识到:即使你是一只矫健的雄鹰,也永远飞不出母爱的长空;即使你是一条扬帆行驶的快船,也永远驶不出母爱的长河!在人生的路上不管我们已走过多远,还要走多远,我们都要经过母亲精心营造的那座桥!
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<algorithm>
    #define SIZE 262145
    using namespace std;
    int array[SIZE<<1];
    void creat(int left,int right,int root)
    {
        int m;
        array[root] = right-left+1;//每一个节点记载包括的数字个数
        if(left == right){
            return;
        }
        m=(right+left)/2;
        creat(left,m,root<<1);      //array[root]的左孩子为array[2*root]
        creat(m+1,right,root<<1|1); //array[root]的右孩子为array[2*root+1]
    }
    int Del(int left,int right,int root,int key)
    {
        int m,flag;
        array[root]--;
        if(left == right){
            return right;
        }
        m=(right+left)/2;
        if(key<=array[root<<1]){//左子树的叶子节点数大于key
            flag=Del(left,m,root<<1,key);
        }
        else{
            key-=array[root<<1];//在右子树中找,key要减去左子树包括的叶子节点数
            flag=Del(m+1,right,root<<1|1,key);
        }
        return flag;
    }
    int main()
    {
        int t,n,k,kk,i,j;
        long long sum;
        scanf("%d",&t);
        for(i=1;i<=t;i++){
            sum=0;
            scanf("%d%d",&n,&k);
            creat(1,n,1);
            for(j=0;j<k;j++){
                scanf("%d",&kk);
                sum+=Del(1,n,1,kk);
            }
            printf("Case %d: %lld\n",i,sum);
        }
        return 0;
    }

    文章结束给大家分享下程序员的一些笑话语录: 一程序员告老还乡,想安度晚年,于是决定在书法上有所造诣。省略数字……,准备好文房4宝,挥起毛笔在白纸上郑重的写下:Hello World

  • 相关阅读:
    纯JDBC代码连接实例 + 完整代码
    计算机语言及二进制
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3078662.html
Copyright © 2020-2023  润新知