news 2026/7/4 18:56:36

时津风的资源收集【牛客tracker 每日一题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
时津风的资源收集【牛客tracker 每日一题】

时津风的资源收集

时间限制:1秒 空间限制:256M

知识点:广度优先搜索(BFS)

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

时津风曾沉迷于页游Kancolle。在游戏中,有一项日常任务需要玩家使用油、弹药、钢材、铝这4 44种资源来开发装备。

现给定目标资源量a , b , c , d a,b,c,da,b,c,d,时津风进入开发界面时4 44种资源均为10 1010单位。她可以对单一资源执行以下任意一种操作(资源总量始终保持在区间[ 10 , 300 ] [10,300][10,300]):

在保证所有资源始终处于合法范围的前提下,求使四种资源同时恰好达到( a , b , c , d ) (a,b,c,d)(a,b,c,d)所需的最少操作次数。

输入描述:

第一行输入整数T ( 1 ≦ T ≦ 10 5 ) T(1≦T≦10^5)T(1T105)—— 测试组数。
接下来T TT行,每行输入4 44个整数a , b , c , d ( 10 ≦ a , b , c , d ≦ 300 ) a,b,c,d (10≦a,b,c,d≦300)a,b,c,d(10a,b,c,d300)

输出描述:

对每组数据输出一个整数,表示最少操作次数。

示例1

输入:

2 10 100 200 300 10 10 10 10

输出:

5 0

说明:

样例1

第一组测试数据,可能的操作是:

初始[ 10 , 10 , 10 , 10 ] [10,10,10,10][10,10,10,10]
将弹药增加100 100100,变成[ 10 , 110 , 10 , 10 ] [10,110,10,10][10,110,10,10]
将弹药减少10 1010,变成[ 10 , 100 , 10 , 10 ] [10,100,10,10][10,100,10,10]
将钢材增加到上限,变成[ 10 , 100 , 300 , 10 ] [10,100,300,10][10,100,300,10]
将钢材减少100 100100,变成[ 10 , 100 , 200 , 10 ] [10,100,200,10][10,100,200,10]
将铝增加到上限,变成[ 10 , 100 , 200 , 300 ] [10,100,200,300][10,100,200,300]

可以发现无法使用5 55次以下的操作来达到开发所需的资源量,所以答案为5 55

第二组测试数据,开发所需的资源量就为资源初始值,所以不需要进行任何操作。

解题思路

本题核心是资源独立性分解 + 单状态BFS预处理,将四维最短路问题降为一维,通过预处理实现海量查询的秒级响应。

  1. 问题降维:资源独立性质
    每次操作仅针对单一资源,四种资源的调整互不影响,因此总最少操作次数等于每种资源从初始值10调整到目标值的最少操作次数之和。问题简化为:求从10出发,通过允许的操作到达数值x的最少步数,其中x ∈ [10, 300]

  2. 单资源最短路建模
    将每个资源数值视为图的节点,每个合法操作对应一条权值为1的边:

  1. 预处理 + 批量查询
    数值范围仅 10~300,共291个节点,一次BFS即可预处理出所有目标值的最少步数数组dis。对于 T 组查询,只需将四个目标值对应的dis值相加,即可 O(1) 得到每组答案,完美适配T ≤ 10^5的大数据量查询。

算法总时间复杂度:预处理为常数级,查询为 O(T),整体效率极高。

总结

核心逻辑:利用资源独立性拆分四维问题,通过BFS预处理单资源最少操作步数,查询时直接累加四个维度的结果。
关键操作:单资源最短路建模、BFS层序遍历求最短步数、预处理数组加速批量查询。
效率保障:数值范围极小,预处理常数开销,查询O(1),轻松应对十万级测试用例。

代码简要说明

  1. 预处理函数pre

  2. 主函数逻辑

代码内容

#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e3+10;constll INF=1e18;constll M=1e6+10;constll mod=1e9+7;ll dis[305];queue<ll>q;ll dx[]={1,-1,10,-10,100,-100};voidpre(){memset(dis,-1,sizeof(dis));dis[10]=0;q.push(10);while(!q.empty()){ll u=q.front();q.pop();for(ll i=0;i<6;i++){ll v=u+dx[i];if(v>=10&&v<=300&&dis[v]==-1){dis[v]=dis[u]+1;q.push(v);}}if(dis[10]==-1){dis[10]=dis[u]+1;q.push(10);}if(dis[300]==-1){dis[300]=dis[u]+1;q.push(300);}}}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);pre();ll T;cin>>T;while(T--){ll a,b,c,d;cin>>a>>b>>c>>d;cout<<dis[a]+dis[b]+dis[c]+dis[d]<<'\n';}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 18:56:15

体验 无条件的关注。

它的本质是&#xff1a;**无条件的关注不是“赞同”或“溺爱”&#xff0c;而是 “移除所有预设过滤器、评价器和响应期待后&#xff0c;对另一个生命体原始数据流的完整接收” (Complete Reception of Another Being’s Raw Data Stream After Removing All Pre-set Filters, …

作者头像 李华
网站建设 2026/6/29 0:33:09

AI 云原生后端架构:Istio 服务网格驱动的智能流量治理实战

AI 云原生后端架构&#xff1a;Istio 服务网格驱动的智能流量治理实战一、AI 服务流量治理的困境&#xff1a;从金丝雀发布到 A/B 实验的精细化诉求 AI 服务的流量治理与传统微服务有本质差异。传统微服务的版本迭代以周为单位&#xff0c;流量切换策略相对简单——蓝绿部署或金…

作者头像 李华
网站建设 2026/6/29 0:33:06

ai-infra-introduction

AI Infra 是让大模型从实验室走向生产环境的技术底座。本文将从零开始&#xff0c;帮你建立对这个领域的全景认知。 &#x1f4d1; 目录 1. 什么是 AI Infra2. 为什么 AI Infra 越来越重要3. AI Infra 技术栈全景4. 硬件层&#xff1a;算力基础5. 系统软件层&#xff1a;让硬…

作者头像 李华
网站建设 2026/6/29 0:36:14

Codex 用得越来越多,ChatGPT 充值到底选 Plus 还是 Pro?

最近很多人在搜索 ChatGPT 充值、GPT 充值、Codex 使用额度时&#xff0c;容易把几个概念混在一起。 有人以为开通 ChatGPT 会员&#xff0c;就等于有了 API 余额&#xff1b;也有人只是偶尔写几段代码&#xff0c;却一上来就纠结要不要直接升级 Pro。 其实&#xff0c;是否选…

作者头像 李华