当前位置: 首页 > article >正文

洛谷-数据结构1-2-二叉树1

P4715 【深基16.例1】淘汰赛题目描述有 2nn≤7个国家参加世界杯决赛圈且进入淘汰赛环节。已经知道各个国家的能力值且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1 号国家和 2 号国家踢一场比赛胜者晋级。3 号国家和 4 号国家也踢一场胜者晋级……晋级后的国家用相同的方法继续完成赛程直到决出冠军。给出各个国家的能力值请问亚军是哪个国家输入格式第一行一个整数 n表示一共 2n 个国家参赛。第二行 2n 个整数第 i 个整数表示编号为 i 的国家的能力值1≤i≤2n能力值在 int 范围内。数据保证不存在平局。输出格式仅一个整数表示亚军国家的编号。输入输出样例输入 #1复制3 4 2 3 1 10 5 9 7输出 #1复制1实现代码#includeiostream #includequeue #includemap using namespace std; int main(){ int n; queuepairint,int q; cinn; n1n; for(int i1;in;i){ int x; cinx; q.push(make_pair(i,x)); } while(q.size()2){ pairint,int x,y; xq.front(); q.pop(); yq.front(); q.pop(); if(x.secondy.second){ q.push(x); }else{ q.push(y); } } pairint,int x,y; xq.front(); q.pop(); yq.front(); q.pop(); if(x.secondy.second){ couty.firstendl; }else{ coutx.firstendl; } return 0; }P1827 [USACO3.4] 美国血统 American Heritage题目描述农夫约翰非常认真地对待他的奶牛们的血统。然而他不是一个真正优秀的记账员。他把他的奶牛们的家谱作成二叉树并且把二叉树以更线性的“树的中序遍历”和“树的前序遍历”的符号加以记录而不是用图形的方法。你的任务是在被给予奶牛家谱的“树中序遍历”和“树前序遍历”的符号后创建奶牛家谱的“树的后序遍历”的符号。每一头奶牛的姓名被译为一个唯一的字母。你可能已经知道你可以在知道树的两种遍历以后可以经常地重建这棵树。显然这里的树不会有多于 26 个的顶点。这是在样例输入和样例输出中的树的图形表达方式C / \ / \ B G / \ / A D H / \ E F附注树的中序遍历是按照左子树根右子树的顺序访问节点树的前序遍历是按照根左子树右子树的顺序访问节点树的后序遍历是按照左子树右子树根的顺序访问节点。输入格式第一行一个字符串表示该树的中序遍历。第二行一个字符串表示该树的前序遍历。输出格式单独的一行表示该树的后序遍历。输入输出样例输入 #1复制ABEDFCHG CBADEFGH输出 #1复制AEFDBHGC说明/提示题目翻译来自NOCOW。USACO Training Section 3.4实现代码#includestring #includecstring #includeiostream #includecstdio using namespace std; string pre,inor; void work(string pre,string inor){ if(pre.empty())return; char rootpre[0]; int kinor.find(root); pre.erase(pre.begin()); string leftprepre.substr(0,k); string rightprepre.substr(k); string leftinorinor.substr(0,k); string rightinorinor.substr(k1); work(leftpre,leftinor); work(rightpre,rightinor); printf(%c,root); } int main(){ cininorpre; work(pre,inor); putchar(\n); return 0; }P5076 【深基16.例7】普通二叉树简化版题目描述您需要写一种数据结构来维护一些数都是绝对值 109 以内的数的集合最开始时集合是空的。其中需要提供以下操作操作次数 q 不超过 104定义数 x 的排名为集合中小于 x 的数的个数 1。查询数 x 的排名。注意 x 不一定在集合里。查询排名为 x(x≥1) 的数。保证集合里至少有 x 个数。求 x 的前驱前驱定义为小于 x且最大的数。若不存在则输出 −2147483647。求 x 的后继后继定义为大于 x且最小的数。若不存在则输出 2147483647。插入一个数 x本题的数据保证插入前 x 不在集合中。保证执行 1,3,4 操作时集合中有至少一个元素。输入格式第一行是一个整数 q表示操作次数。接下来 q 行每行两个整数 op,x分别表示操作序号以及操作的参数 x。输出格式输出有若干行。对于操作 1,2,3,4输出一个整数表示该操作的结果。输入输出样例输入 #1复制7 5 1 5 3 5 5 1 3 2 2 3 3 4 3输出 #1复制2 3 1 5实现代码#includeiostream #includecstdio #define re register using namespace std; const int INF0x7fffffff; int cont; struct node{ int val,siz,cnt,ls,rs; }tree[1000010]; int n,opt,xx; inline void add(int x,int v) { tree[x].siz; if(tree[x].valv){ tree[x].cnt; return ; } if(tree[x].valv){ if(tree[x].ls!0) add(tree[x].ls,v); else{ cont; tree[cont].valv; tree[cont].siztree[cont].cnt1; tree[x].lscont; } } else{ if(tree[x].rs!0) add(tree[x].rs,v); else{ cont; tree[cont].valv; tree[cont].siztree[cont].cnt1; tree[x].rscont; } } } int queryfr(int x, int val, int ans) { if (tree[x].valval) { if (tree[x].ls0) return ans; else return queryfr(tree[x].ls,val,ans); } else { if (tree[x].rs0) return tree[x].val; return queryfr(tree[x].rs,val,tree[x].val); } } int queryne(int x, int val, int ans) { if (tree[x].valval) { if (tree[x].rs0) return ans; else return queryne(tree[x].rs,val,ans); } else { if (tree[x].ls0) return tree[x].val; return queryne(tree[x].ls,val,tree[x].val); } } int queryrk(int x,int rk) { if(x0) return INF; if(tree[tree[x].ls].sizrk) return queryrk(tree[x].ls,rk); if(tree[tree[x].ls].siztree[x].cntrk) return tree[x].val; return queryrk(tree[x].rs,rk-tree[tree[x].ls].siz-tree[x].cnt); } int queryval(int x,int val) { if(x0) return 0; if(valtree[x].val) return tree[tree[x].ls].siz; if(valtree[x].val) return queryval(tree[x].ls,val); return queryval(tree[x].rs,val)tree[tree[x].ls].siztree[x].cnt; } inline int read() { re int r0; re char chgetchar(); while(ch0||ch9) chgetchar(); while(ch0ch9){ r(r3)(r1)(ch^48); chgetchar(); } return r; } signed main() { nread(); while(n--){ optread();xxread(); if(opt1) printf(%d\n,queryval(1,xx)1); else if(opt2) printf(%d\n,queryrk(1,xx)); else if(opt3) printf(%d\n,queryfr(1,xx,-INF)); else if(opt4) printf(%d\n,queryne(1,xx,INF)); else{ if(cont0){ cont; tree[cont].cnttree[cont].siz1; tree[cont].valxx; } else add(1,xx); } } return 0; }P1364 医院设置题目描述设有一棵二叉树如图其中圈中的数字表示结点中居民的人口。圈边上数字表示结点编号现在要求在某个结点上建立一个医院使所有居民所走的路程之和为最小同时约定相邻接点之间的距离为 1。如上图中若医院建在 1 处则距离和 4122×202×40136若医院建在 3 处则距离和 4×213204081。输入格式第一行一个整数 n表示树的结点数。接下来的 n 行每行描述了一个结点的状况包含三个整数 w,u,v其中 w 为居民人口数u 为左链接为 0 表示无链接v 为右链接为 0 表示无链接。输出格式一个整数表示最小距离和。输入输出样例输入 #1复制5 13 2 3 4 0 0 12 4 5 20 0 0 40 0 0输出 #1复制81说明/提示数据规模与约定对于 100% 的数据保证 1≤n≤1000≤u,v≤n1≤w≤105。实现代码#includecstdio using namespace std; int a[101],g[101][101]; int main() { int n,l,r,min,total; scanf(%d,n); for(int i1;in;i) { for(int j1;jn;j) { g[i][j]1000000; } } for(int i1;in;i) { g[i][i]0; scanf(%d%d%d,a[i],l,r); if(l0)g[i][l]g[l][i]1; if(r0)g[i][r]g[r][i]1; } for(int k1;kn;k) { for(int i1;in;i) { if(i!k) { for(int j1;jn;j) { if(i!jk!jg[i][k]g[k][j]g[i][j]) g[i][j]g[i][k]g[k][j]; } } } } min0x7fffffff; for(int i1;in;i){ total0; for(int j1;jn;j) totalg[i][j]*a[j]; if(totalmin)mintotal; } printf(%d,min); return 0; }P4913 【深基16.例3】二叉树深度题目描述有一个 n(n≤106) 个结点的二叉树。给出每个结点的两个子结点编号均不超过 n建立一棵二叉树根节点的编号为 1如果是叶子结点则输入0 0。建好这棵二叉树之后请求出它的深度。二叉树的深度是指从根节点到叶子结点时最多经过了几层。输入格式第一行一个整数 n表示结点数。之后 n 行第 i 行两个整数 l、r分别表示结点 i 的左右子结点编号。若 l0 则表示无左子结点r0 同理。输出格式一个整数表示最大结点深度。输入输出样例输入 #1复制7 2 7 3 6 4 5 0 0 0 0 0 0 0 0输出 #1复制4实现代码#include iostream #define _for(i, a, b) for (int i(a); i(b); i) using namespace std; const int MAXN 1e6 10; struct node { int left, right; }; node tree[MAXN]; int n, ans; void dfs(int id, int deep) { if (id 0) return ; ans max(ans, deep); dfs(tree[id].left, deep1); dfs(tree[id].right, deep1); } int main() { cin n; _for (i, 1, n) cin tree[i].left tree[i].right; dfs(1, 1); cout ans endl; return 0; }

相关文章:

洛谷-数据结构1-2-二叉树1

P4715 【深基16.例1】淘汰赛题目描述有 2n(n≤7)个国家参加世界杯决赛圈且进入淘汰赛环节。已经知道各个国家的能力值,且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1 号国家和 2 号国家踢一场比赛,胜者晋级。3 …...

如何用GetQzonehistory永久保存你的QQ空间青春回忆

如何用GetQzonehistory永久保存你的QQ空间青春回忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否也曾担心,那些记录着成长足迹的QQ空间说说会在某天突然消失&#x…...

Rockchip RK3588无线模块深度解析:AIC8800与AP6275P实战配置指南

Rockchip RK3588无线模块深度解析:AIC8800与AP6275P实战配置指南 【免费下载链接】ubuntu-rockchip Ubuntu for Rockchip RK35XX Devices 项目地址: https://gitcode.com/gh_mirrors/ub/ubuntu-rockchip 在嵌入式Linux系统开发中,Rockchip RK3588…...

传奇私服地图配置保姆级教程:从CheckQuest到Weather,手把手教你玩转MapInfo参数

传奇私服地图配置全解析:从基础参数到高级玩法设计 第一次打开MapInfo.txt文件时,那些密密麻麻的参数确实让人头皮发麻。作为私服GM,我清楚地记得自己最初面对这些配置时的困惑——每个参数看起来都很重要,但又不知道从哪里入手。…...

关于【美点】的一点思考

医生都知道,每个人的体质都不一样,不管是中医还是西医,在这一点上应该是有共识的。那对于医美行业来说,每个人的【美点】也是不一样的。只不过当市场化、同质化开始发挥作用之后,这点共识就很容易被单维化进行处理。以…...

VRC Gesture Manager实战指南:从动画预览到专业调试的全流程解析

VRC Gesture Manager实战指南:从动画预览到专业调试的全流程解析 【免费下载链接】VRC-Gesture-Manager A tool that will help you preview and edit your VRChat avatar animation directly in Unity. 项目地址: https://gitcode.com/gh_mirrors/vr/VRC-Gesture…...

FPGA新手必看:Xilinx IDDR与ODDR原语实战指南(附AD9361接口案例)

FPGA实战:Xilinx IDDR与ODDR原语深度解析与AD9361接口设计 第一次接触FPGA的DDR接口设计时,我被那些时钟边沿、数据对齐的问题折磨得够呛。记得当时为了调试AD9361的接口,整整三天没合眼,最后发现是IDDR的模式选错了。本文将带你避…...

2026年物联网APP开发十大品牌,谁通过了官方备案与IoT兼容性双认证?

在数字化转型的浪潮中,物联网(IoT)技术已经成为企业提升效率和竞争力的核心工具之一。然而,对于许多企业而言,选择一家合适的物联网APP开发公司却是一个难题。本文将从实际需求出发,结合市场调研数据&#…...

从Copilot到CodeInterpreter:AI代码解释技术演进图谱(2022–2026关键拐点全标注)

第一章:AI代码解释技术的范式跃迁与历史坐标 2026奇点智能技术大会(https://ml-summit.org) AI代码解释技术已从早期基于规则的语法树遍历,演进为融合大语言模型、程序语义建模与运行时感知的多模态理解范式。这一跃迁并非线性叠加,而是由三…...

Claude Opus 4.7 相比 Opus4.6 关键改善总结

Claude Opus 4.7 相比之前的 4.6 版本,最核心的提升集中在视觉分辨率、自主编程能力以及指令遵循的严谨性。以下是关键改善点的详细总结: 1. 视觉能力的质跃 (Vision) 分辨率提升 3 倍:支持最高 2576px / 3.75MP 的图像,而 4.6 …...

WinUtil:3分钟搞定Windows软件安装与系统优化的终极神器

WinUtil:3分钟搞定Windows软件安装与系统优化的终极神器 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 还在为Windows系统臃肿不…...

学术专著写作救星!AI专著撰写工具,快速打造专业大作

学术专著的主要价值在于其内容的系统性和逻辑性,然而这也是写作过程中最难克服的障碍。与期刊论文单一问题的探讨不同,专著需要构建一个完整的框架,从绪论到理论基础,再到核心研究、应用拓展及结论,各个章节应当层层递…...

生成式AI用户画像构建,仅剩最后20%企业掌握的核心能力:基于多模态交互日志的细粒度意图聚类技术

第一章:生成式AI应用用户画像构建 2026奇点智能技术大会(https://ml-summit.org) 生成式AI应用的用户画像已不再局限于传统人口统计与行为日志的静态聚合,而是融合多模态交互信号、提示工程偏好、响应采纳率、编辑修正轨迹及上下文延续性等动态语义特征…...

离散数学“劝退”指南:避开命题逻辑学习中的3个常见坑(附正确思路)

离散数学命题逻辑避坑实战:从混淆到通透的3个关键突破点 第一次翻开离散数学教材时,我被那些看似简单的符号和规则彻底击垮了。直到期中考试前夜,我才惊恐地发现,自己连最基本的命题符号化都频频出错——把"只有努力才能成功…...

企业级Java AI新范式:AgentRAG+经验库精准触发

在企业Java系统AI化进程中,传统RAG侧重信息检索,普通Agent侧重自主规划,二者在生产场景常面临检索不准、流程失控、hallucination、执行不规范等问题。JBoltAI面向企业级场景提出AgentRAG全新范式,以经验库为核心,实现…...

如何快速掌握一门新技术:5个深刻实用的学习策略

在技术快速迭代的时代,掌握一门新技术不再是一个漫长的过程,而是可以通过科学方法实现的高效行动。真正的学习不是盲目地收集信息,而是建立系统化的认知框架并付诸实践。以下是5个经过验证的深刻实用策略,助你快速掌握新技术。1. …...

告别数据卡死:STM32 HAL库串口IDLE+DMA接收的完整配置流程与避坑指南

STM32 HAL库串口IDLEDMA接收实战:从配置陷阱到稳定传输 在嵌入式开发中,串口通信是最基础也最常用的外设之一。当面对高速数据流或频繁通信场景时,传统的轮询或中断方式往往力不从心。这时,DMA(直接内存访问&#xff0…...

eBPF驱动的企业可观测性革命:从内核层重构运维新范式

一、技术背景:可观测性困境与eBPF的崛起在云原生和微服务架构普及的今天,企业可观测性面临前所未有的挑战。传统监控方案基于应用层埋点(如OpenTelemetry)、基础设施代理(如Prometheus Node Exporter)和日志…...

英语作为外语的难度分析(针对中国学习者)

英语作为外语的难度分析(针对中国学习者)对中国学习者而言,英语作为外语的难度尤为突出,核心原因在于其书写、发音、词汇、语法四大系统均与汉语完全脱节,且逻辑体系复杂、无任何母语基础可依托,整体难度远…...

Java项目集成Tesseract OCR:从环境搭建到跨平台部署实战

1. 为什么选择Tesseract OCR? 在Java项目中集成OCR功能时,开发者通常会面临几个关键选择。Tesseract作为开源OCR引擎的"老将",从1985年由HP实验室开发至今,已经成为Apache 2.0许可下的明星项目。我去年接手一个票据识别…...

IndexTTS2:如何用工业级可控零样本语音合成技术重塑内容创作?

IndexTTS2:如何用工业级可控零样本语音合成技术重塑内容创作? 【免费下载链接】index-tts An Industrial-Level Controllable and Efficient Zero-Shot Text-To-Speech System 项目地址: https://gitcode.com/gh_mirrors/in/index-tts 在当今数字…...

如何彻底解决Mac多窗口遮挡问题?Topit窗口置顶工具深度解析

如何彻底解决Mac多窗口遮挡问题?Topit窗口置顶工具深度解析 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否曾为Mac上频繁切换窗口而烦恼&…...

GitHub Star暴涨320%的开源解释引擎背后:奇点大会未公开的2个编译器级优化专利

第一章:GitHub Star暴涨320%的开源解释引擎背后:奇点大会未公开的2个编译器级优化专利 2026奇点智能技术大会(https://ml-summit.org) 在奇点大会闭门技术论坛中,StarFusion解释引擎团队首次披露其核心突破——两项未公开的编译器级专利&…...

避坑指南:从Metashape Linux版权限错误到RLM服务器启动,手把手解决无GUI建模的常见问题

从权限配置到API适配:Linux服务器无GUI运行Metashape全流程避坑指南 当摄影测量软件Metashape遇上Linux服务器环境,技术团队往往面临着一系列独特的挑战——从文件权限配置到后台服务管理,从命令行操作到Python脚本适配。本文将基于真实项目经…...

Qsign签名服务:Windows平台上一键搭建QQ机器人签名API的完整指南

Qsign签名服务:Windows平台上一键搭建QQ机器人签名API的完整指南 【免费下载链接】Qsign Windows的一键搭建签名api 项目地址: https://gitcode.com/gh_mirrors/qs/Qsign Qsign签名服务是一款专为Windows平台设计的QQ机器人签名API一键搭建解决方案&#xff…...

云原生环境中的边缘计算:从K3s到生产实践

云原生环境中的边缘计算:从K3s到生产实践 🔥 硬核开场 各位技术大佬们,今天咱们来聊聊边缘计算和云原生的那些事儿。别跟我说你还在传统数据中心玩云原生,那都out了!现在的云原生早已经延伸到了边缘,从工厂…...

3分钟让你的OpenWrt路由器性能飙升:Turbo ACC网络加速插件完全指南 [特殊字符]

3分钟让你的OpenWrt路由器性能飙升:Turbo ACC网络加速插件完全指南 🚀 【免费下载链接】turboacc 一个适用于官方openwrt(22.03/23.05/24.10) firewall4的turboacc 项目地址: https://gitcode.com/gh_mirrors/tu/turboacc 你是否经常遇到这样的烦…...

中国自然保护区边界矢量数据获取与GIS处理全流程解析

1. 中国自然保护区边界数据获取指南 第一次接触自然保护区边界数据时,我也曾一头雾水。这类数据对生态保护、国土规划等领域至关重要,但获取渠道和处理方法却鲜有系统介绍。经过多个项目实战,我总结出一套小白也能轻松上手的数据获取全流程。…...

气象编程避坑指南:解决ERA5数据计算涡度平流时的常见错误

气象编程避坑指南:ERA5数据计算涡度平流的7个致命陷阱与解决方案 第一次用ERA5数据计算涡度平流时,我盯着屏幕上那一堆报错信息发了半小时呆——明明是按照官方文档写的代码,为什么连最基本的数据读取都会出错?后来才发现&#xf…...

Kubernetes和机器学习工作负载:硬核实践指南

Kubernetes和机器学习工作负载:硬核实践指南 🔥 硬核开场 各位技术老铁们,今天咱们来聊聊Kubernetes和机器学习的那些事儿。别跟我说你还在本地跑模型训练,那都2023年了!现在玩机器学习,容器化部署、分布式…...