第三章 树

2423 叶子节点的数量 AC 3.7
2282 树的深度 AC 3.7
2281 树的Size之和 AC 3.7
2627 树的深度及子树大小 AC 3.10
3039 叶子节点的路径 AC 3.11

2599 最近公共祖先(LCA) AC 3.11
2621 树上距离 AC
2675 开疆扩土
1591 二叉树先序遍历 AC
2064 二叉树中序遍历 AC
2350 二叉树后序遍历 AC

3022 奇怪的二叉树
3021 有趣的二叉树
2605 没有上司的舞会
2602 树的直径 AC
2610 粗心的小Biu

175 区间中第K大的数 AC 2.22

2021.2.22

51nod-1175 区间中第K大的数**

解题思路:

分治(70分)。
任取一个数组当中的数x(第一个,最后一个,或者随机都行),
考虑把数组分为三段,小于x的数,等于x的数和大于x的数。
然后判断
如果大于x的数的数目多余k个,说明答案应该在大于x这段里面,递归调用函数即可;
否则:
1、如果大于和等于x的数目大于等于k,说明答案就是x;
2、否则,答案应该在小于x这段里面,递归函数即可,但是数目应该是k减去大于和等于两段的数目。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include <vector>
using namespace std;
int N,Q,I,J,K;
vector <int> a;
int f(vector <int> b, int st, int ed, int  k){int x = b[st];vector <int> small, equal, bigger;for (int i = st; i <= ed; i++){if (b[i] < x) small.push_back(b[i]);else if (b[i] == x) equal.push_back(b[i]);else if (b[i] > x ) bigger.push_back(b[i]);}int cnts = small.size(),cnte = equal.size(), cntb = bigger.size();if(cntb >= k) return f(bigger, 0, cntb - 1, k);else if (cntb + cnte >= k) return x;else return f(small, 0, cnts - 1, k - cntb - cnte);
}
int main(){int t;scanf("%d", &N);for (int i = 0; i < N; i++)scanf("%d", &t),a.push_back(t);scanf("%d", &Q);for(int i = 0; i < Q; i++){scanf("%d%d%d", &I,&J,&K); //I, J  ~ 0 -- N -1 printf("%d\n", f(a, I, J, K));}return 0;
}

这里可以有个优化,待续。。。。。。。

2021.3.7

上一题的正解是主席树,zyz同学已经A掉了这题,然而我不会,有空(不知道啥时候)再学吧。

2423 叶子节点的数量
2282 树的深度
2281 树的Size之和

三道树的入门题,AC了。

学了好几次链式前向星存图,都是半懂不懂,今天刚刚看了一遍视频,基本懂了。

// 链式前向星存图和树
struct edge{int to, next;
};
int head[N],pos,e[N<<1];
void add(int u, int v){e[++pos].to = v;e[pos].next = head[u];head[u] = pos;
}

2021.3.11

最近公共祖先

树 的直径

51NOD L4-第三章 树 刷题记录-zgw相关推荐

  1. 51NOD L4-第三章 树 刷题记录-zyz

    第三章 树 2423 叶子节点的数量 2282 树的深度 2281 树的Size之和 2627 树的深度及子树大小 3039 叶子节点的路径 2599 最近公共祖先(LCA) 2621 树上距离 26 ...

  2. 算法笔记CodeUp第一至第六章刷题记录

    文章目录 <算法笔记>2.2小节--C/C++快速入门->顺序结构 1.例题1-1-1 按要求输出信息(1) 2.例题1-1-2 按要求输出信息(2) 3.例题1-2-1 求两个整数 ...

  3. PAT甲级刷题记录-(AcWing)-(Day06树 8题)

    PAT甲级刷题记录-(AcWing)-(Day06树 8题) 课程来源AcWing 其中AcWing中的题目为翻译好的中文题目 今日刷题列表 1110 Complete Binary Tree 111 ...

  4. 《软件方法》第三章 自测题

    UMLChina软件方法各章练习题自测(三) 关于UMLChina 前言 <软件方法>第三章自测题 自测题1 自测题2 关于UMLChina 前言 笔者为在校大三生,初次接触UML建模语言 ...

  5. ACM比赛经验、刷题记录及模板库总结(更新中)

    前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...

  6. CSP-S集训刷题记录

    $ CSP.S $ 集训刷题记录: $ By~wcwcwch $ 一.字符串专题: 1. [模板]$ manacher $ 算法 模型: 求出字符串 $ S $ 中所有回文串的位置及长度. $ sol ...

  7. $2019$ 暑期刷题记录 $2$(基本算法专题)

    $ 2019 $ 暑期刷题记录 $ 2 $ (基本算法专题) $ by~~wch $ $ BZOJ~1958~Strange~Towers~of~Hanoi $ (动态规划,递推) 题目大意: 求有 ...

  8. FPGA学习: Verilog刷题记录(15)

    FPGA学习: Verilog刷题记录(14-1) 刷题网站 : HDLBits 第三章 : Circuits 第二节 :Sequential Logic 第一节:Finite State Machi ...

  9. BZOJ刷题记录---提高组难度

    BZOJ刷题记录---提高组难度 总目录详见https://blog.csdn.net/mrcrack/article/details/90228694 序号 题号 算法 思想难度 实现难度 总难度 ...

最新文章

  1. AI+视频分析:实时监测无处不在的安全风险
  2. CAS SSO 原理 - 基础模式
  3. linux 查看java进程_Linux进程查看及管理工具(ps, vmstat, dstat, glances等)
  4. 不用临时变量,交换两个变量的值
  5. C语言经典例96-计算字符串中子串出现的次数
  6. 华硕老毛子(Padavan)——校园网电信宽带闪讯(NetKeeper)L2TP学校认证解决方案
  7. 诺顿无法启动扫描,扫描引擎返回错误0x20000058错误
  8. Eclipse安装Egit插件,egit安装特别缓慢
  9. 使用DCMTK实现DICOM文件的读写
  10. 什么是强化学习?(贝尔曼方程)
  11. 被误解的明朝——中国的文艺复兴(转)
  12. MP-BGP报文详解
  13. Apache httpd服务器下载及安装
  14. mint-ui —— checklist的使用
  15. (转)查看USB设备
  16. 黑马程序员—C#多线程
  17. ipcs、ipcrm、sysresv、kernel.shmmax
  18. MATLAB二维图形绘制
  19. ## 大一java课程设计_航班查询系统(我是小白)
  20. HDU Today 【最短路径】+【构造map】

热门文章

  1. 5款知乎高赞的超牛软件,你一定要知道
  2. 全国大学生软件测试大赛Web应用测试(一)赛项简介
  3. 初步使用计算机教学设计,【教资笔试——科目三】信息技术教学设计范例
  4. 如何以软文宣传的方式成功推广洗发水的新产品上市?
  5. storm风暴英雄 tempo_暴雪发布2018《风暴英雄》HGC战队实力排行榜
  6. android(4) 使用ViewPaper 以及这几年来的一些感悟
  7. 嵌入式 Linux 的基础知识介绍
  8. 中文乱码——编码问题
  9. mysql 存储过程中 if else的使用 和赋值方式
  10. 申报深圳高新企业认定除了补贴,还有哪些好处?