博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
叶子节点测试hdu 4217 线段树
阅读量:6337 次
发布时间:2019-06-22

本文共 1290 字,大约阅读时间需要 4 分钟。

发一下牢骚和主题无关:

    

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

    每日一道理
这浓浓的母爱使我深深地认识到:即使你是一只矫健的雄鹰,也永远飞不出母爱的长空;即使你是一条扬帆行驶的快船,也永远驶不出母爱的长河!在人生的路上不管我们已走过多远,还要走多远,我们都要经过母亲精心营造的那座桥!
#include
#include
#include
#include
#include
#define SIZE 262145using 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

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

转载地址:http://jvxoa.baihongyu.com/

你可能感兴趣的文章
Flash文字效果
查看>>
各种排序算法总结篇(高速/堆/希尔/归并)
查看>>
使用c#訪问Access数据库时,提示找不到可安装的 ISAM
查看>>
Highcharts X轴纵向显示
查看>>
windows 注册表讲解
查看>>
【算法】论平衡二叉树(AVL)的正确种植方法
查看>>
基于DDD的现代ASP.NET开发框架--ABP系列之1、ABP总体介绍
查看>>
react 从零开始搭建开发环境
查看>>
scala recursive value x$5 needs type
查看>>
ps -ef |grep 输出的具体含义
查看>>
markdown编辑
查看>>
ASCII 在线转换器
查看>>
Linux内核同步:RCU
查看>>
Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
查看>>
Java设计模式之五大创建型模式(附实例和详解)
查看>>
60 Permutation Sequence
查看>>
主流的RPC框架有哪些
查看>>
Hive学习之路 (七)Hive的DDL操作
查看>>
[转]mysql使用关键字作为列名的处理方式
查看>>
awesome go library 库,推荐使用的golang库
查看>>