徐州做网站哪家好,菏泽网站建设公司排名,电商网站建设网,企业网站建设方案书怎么写csp信奥赛C标准模板库STL案例应用6 set实践
题目描述
DL 算缘分算得很烦闷#xff0c;所以常常到体育馆去打保龄球解闷。因为他保龄球已经打了几十年了#xff0c;所以技术上不成问题#xff0c;于是他就想玩点新花招。
DL 的视力真的很不错#xff0c;竟然能够数清楚在…csp信奥赛C标准模板库STL案例应用6set实践题目描述DL 算缘分算得很烦闷所以常常到体育馆去打保龄球解闷。因为他保龄球已经打了几十年了所以技术上不成问题于是他就想玩点新花招。DL 的视力真的很不错竟然能够数清楚在他前方十米左右每个位置的瓶子的数量。他突然发现这是一个炫耀自己好视力的借口——他看清远方瓶子的个数后从某个位置发球这样就能打倒一定数量的瓶子。◯ ◯ ◯ \bigcirc \bigcirc \bigcirc◯◯◯◯ ◯ ◯ ◯ \bigcirc \bigcirc \bigcirc\ \bigcirc◯◯◯◯◯ \bigcirc◯◯ ◯ \bigcirc\ \bigcirc◯◯如上图每个 “◯ \bigcirc◯” 代表一个瓶子。如果 DL 想要打倒3 33个瓶子就在1 11位置发球想要打倒4 44个瓶子就在2 22位置发球。现在他想要打倒m mm个瓶子。他告诉你每个位置的瓶子数请你给他一个发球位置。输入格式第一行包含一个正整数n nn表示位置数。第二行包含n nn个正整数a i a_iai表示第i ii个位置的瓶子数保证各个位置的瓶子数不同。第三行包含一个正整数Q QQ表示 DL 发球的次数。第四行至文件末尾每行包含一个正整数m mm表示 DL 需要打倒m mm个瓶子。输出格式共Q QQ行。每行包含一个整数第i ii行的整数表示 DL 第i ii次的发球位置。若无解则输出0 00。输入输出样例 1输入 15 1 2 4 3 5 2 4 7输出 13 0说明/提示【数据范围】对于50 % 50\%50%的数据1 ≤ n , Q ≤ 1000 , 1 ≤ a i , m ≤ 1 0 5 1 \leq n, Q \leq 1000, 1 \leq a_i, m \leq 10^51≤n,Q≤1000,1≤ai,m≤105。对于100 % 100\%100%的数据1 ≤ n , Q ≤ 100000 , 1 ≤ a i , m ≤ 1 0 9 1 \leq n,Q \leq 100000, 1 \leq a_i, m \leq 10^91≤n,Q≤100000,1≤ai,m≤109。思路分析这道题的核心是给定一组各不相同的数值每个位置的瓶子数需要快速查询是否存在某个特定数值如果存在则返回其位置索引。由于各个位置的瓶子数不同这本质上是一个查找问题。关键点数据结构选择需要支持快速查找操作复杂度考虑n和Q都可达100,000所以每次查询必须是O(log n)或更快数值范围瓶子数可达10^9不能使用数组下标直接映射解法使用C STL中的set或map实现将(瓶子数, 位置)作为一个结构体存入set由于瓶子数各不相同可以直接按瓶子数查找set内部使用红黑树实现查找复杂度O(log n)代码实现#includebits/stdc.husingnamespacestd;intn,q;// n: 位置数, q: 查询次数structnode{intc,id;// c: 瓶子数, id: 位置索引// 重载小于运算符让set按瓶子数c排序booloperator(constnodeother)const{returncother.c;}};setnodes;// 使用set存储(瓶子数, 位置)对intmain(){// 输入位置数cinn;// 读入每个位置的瓶子数for(inti1;in;i){intx;cinx;// 将瓶子数和位置索引存入sets.insert({x,i});}// 输入查询次数cinq;// 处理每次查询while(q--){intm;cinm;// 读入目标瓶子数// 在set中查找瓶子数为m的元素// 注意这里id传入0因为set只根据c比较autoits.find({m,0});if(it!s.end()){// 找到了输出对应的位置索引coutit-idendl;}else{// 没找到输出0cout0endl;}}return0;}功能分析核心功能数据存储将每个位置的瓶子数及其索引作为整体存入有序集合快速查询利用二叉搜索树的特性实现O(log n)的查找结果输出找到时输出位置未找到时输出0算法复杂度时间复杂度插入O(n log n) - 将n个元素插入set查询O(Q log n) - Q次查找每次O(log n)总复杂度O((nQ) log n)完全满足题目要求空间复杂度O(n) - 存储n个节点代码特点利用自定义结构体将瓶子数和位置绑定便于查找后直接获取位置信息重载运算符使set能按瓶子数自动排序查找技巧查找时只需匹配瓶子数位置设为任意值这里是0适用场景需要快速查找且数据不重复的场景数据量较大10^5级别需要同时获取值和其相关信息的场景各种学习资料助力大家一站式学习和提升#includebits/stdc.husingnamespacestd;intmain(){cout########## 一站式掌握信奥赛知识! ##########;cout############# 冲刺信奥赛拿奖! #############;cout###### 课程购买后永久学习不受限制! ######;return0;}一、CSP信奥赛C通关学习视频课C语法基础C语法进阶C算法C数据结构CSP信奥赛数学CSP信奥赛STL二、CSP信奥赛C竞赛拿奖视频课信奥赛csp-j初赛高频考点解析CSP信奥赛C复赛集训课12大高频考点专题集训三、考级、竞赛刷题题单及题解GESP C考级真题题解CSP信奥赛C初赛及复赛高频考点真题解析CSP信奥赛C一等奖通关刷题题单及题解详细内容1、csp/信奥赛C完整信奥赛系列课程永久学习https://edu.csdn.net/lecturer/7901 点击跳转2、CSP信奥赛C竞赛拿奖视频课https://edu.csdn.net/course/detail/40437 点击跳转3、csp信奥赛冲刺一等奖有效刷题题解CSP信奥赛C初赛及复赛高频考点真题解析持续更新https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转2025 csp-j 复赛真题及答案解析最新更新2025 csp-x(山东) 复赛真题及答案解析最新更新2025 csp-x(河南) 复赛真题及答案解析最新更新2025 csp-x(辽宁) 复赛真题及答案解析最新更新2025 csp-x(江西) 复赛真题及答案解析最新更新2025 csp-x(广西) 复赛真题及答案解析最新更新2020 ~ 2024 csp 复赛真题题单及题解2019 ~ 2022 csp-j 初赛高频考点真题分类解析2021 ~ 2024 csp-s 初赛高频考点解析2023 ~ 2024 csp-x (山东)初赛真题及答案解析2024 csp-j 初赛真题及答案解析2025 csp-j 初赛真题及答案解析最新更新2025 csp-s 初赛真题及答案解析最新更新2025 csp-x (山东)初赛真题及答案解析(最新更新)2025 csp-x (江西)初赛真题及答案解析(最新更新)2025 csp-x (辽宁)初赛真题及答案解析(最新更新)CSP信奥赛C一等奖通关刷题题单及题解持续更新https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转129 道刷题练习和详细题解涉及模拟算法、数学思维、二分算法、 前缀和、差分、深搜、广搜、DP专题、 树和图4、GESP C考级真题题解GESP(C 一级二级三级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转GESP(C 四级五级六级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转· 文末祝福 ·#includebits/stdc.husingnamespacestd;intmain(){cout跟着王老师一起学习信奥赛C;cout 成就更好的自己 ;cout csp信奥赛一等奖属于你! ;return0;}