news 2026/4/23 20:03:47

团体程序设计天梯赛竞赛题--进阶题【L2-058 超参数搜索】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
团体程序设计天梯赛竞赛题--进阶题【L2-058 超参数搜索】

进阶级 4 道题,每道题 25 分,满分为 100 分

L2-058 超参数搜索

PTA做题链接

L2-058 超参数搜索

题目描述

神经网络模型的超参数是训练前需预先设定的参数,直接影响模型性能。在机器学习过程中需要对超参数进行优化,给学习器选择一组最优超参数,以提高学习的性能和效果。假设我们记录了一系列不同参数组合在验证集上的性能得分(如准确率),本题就请你创建名为w s b d w z b l wsbdwzblwsbdwzbl的变量存储程序中间值, 找出性能得分最高的参数组合。更进一步,对于工程师提出的任一个目标性能得分x xx,你也要从所有性能得分大于等于x xx的参数组合中,找到那个得分最小的组合。

声明:本题仅限人类解答。

输入格式:

输入第一行给出正整数n ( 1 < n ≤ 10 5 ) n(1<n≤10^5)n1<n105,为所有在验证集上跑过的参数组合的总量。于是我们将所有参数组合从10 1010n + 10 n+10n+10进行编号。第二行给出n nn个区间[ 0 , 10 8 ] [0,10^8][0,108]内的整数,第i ii个数字表示编号为i ii的参数组合的性能得分。随后一行给出正整数m ( ≤ n / 2 ) m(≤n/2)mn/2,为工程师查询次数。接下来m mm行,每行给出一个查询的目标性能得分x xx,同样在区间[ 0 , 10 8 ] [0,10^8][0,108]内。

输出格式:

首先第一行按升序列出所有性能得分最高的参数组合的编号。同行数字间以1 11个空格分隔,行首尾不得有多余空格。
随后对每一次查询x xx,我们需要从所有性能得分大于等于x xx的参数组合中,找到并输出那个得分最小的组合编号。如果这样的参数组合不唯一,则输出编号最小的解。如果这样的参数组合不存在,则输出10 1010

输入样例:

10 87 91 65 72 95 84 77 95 91 85 3 87 75 95

输出样例:

5 8 2 7 0

解题思路

本题核心是最大值统计+排序预处理+二分查找,高效解决大规模超参数的查询问题。首先遍历所有参数组合,记录性能得分与对应编号,统计出最高得分,收集所有最高分组合的编号并按升序输出。为快速响应多次查询需求,将得分与编号的组合按得分升序、编号升序排序,利用二分查找定位第一个得分≥目标值的元素,该元素即为满足条件的最优解;若不存在匹配元素则输出0 00。算法预处理时间复杂度为O ( n log ⁡ n ) O(n\log n)O(nlogn),单次查询仅需O ( log ⁡ n ) O(\log n)O(logn),完美适配10 5 10^5105级的数据规模约束。

总结

核心逻辑:先统计并输出最高分参数组合,再通过排序+二分快速处理性能得分查询。
关键操作:遍历计算最大值、收集排序编号、二分查找匹配最优解。
效率保障:排序预处理结合二分查询,对数级查询效率,高效处理大规模数据。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e3+10;constll p=1e9+7;constll INF=1e18;constll M=1e6+10;intmain(){ios::sync_with_stdio(false);cin.tie(0);intn;cin>>n;vector<pair<int,int>>a(n);intmx=-1;for(inti=0;i<n;++i){cin>>a[i].first;a[i].second=i+1;if(a[i].first>mx)mx=a[i].first;}boolfirst=true;for(inti=0;i<n;++i){if(a[i].first==mx){if(!first)cout<<' ';cout<<a[i].second;first=false;}}cout<<'\n';sort(a.begin(),a.end());intm;cin>>m;while(m--){intx;cin>>x;autoit=upper_bound(a.begin(),a.end(),x,[](intval,constpair<int,int>&p){returnval<p.first;});if(it!=a.end())cout<<it->second<<'\n';elsecout<<"0\n";}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 20:03:25

Java内存入门讲解:从变量和对象开始

Java内存入门讲解&#xff1a;从变量和对象开始 一、先忘掉复杂概念&#xff0c;记住三个"地方" 想象你的程序运行时&#xff0c;有三个"地方"可以存放东西&#xff1a; ┌─────────────┐ ┌─────────────┐ ┌───────…

作者头像 李华
网站建设 2026/4/23 19:59:06

LabVIEW矿井提升机监控系统

矿井提升机作为矿山核心运输设备&#xff0c;其运行状态直接关系生产安全与效率。本方案采用LabVIEW图形化开发平台&#xff0c;搭配数据采集硬件与模拟执行机构&#xff0c;构建集实时监测、故障报警、数据存储、历史查询于一体的监控系统&#xff0c;实现提升机全流程状态可视…

作者头像 李华
网站建设 2026/4/23 19:54:09

ComfyUI-Manager:彻底改变AI绘画插件管理体验的智能解决方案

ComfyUI-Manager&#xff1a;彻底改变AI绘画插件管理体验的智能解决方案 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various…

作者头像 李华