首页 > 试题广场 >

时津风的资源收集

[编程题]时津风的资源收集
  • 热度指数:972 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
{\hspace{15pt}}时津风曾沉迷于页游 Kancolle。在游戏中,有一项日常任务需要玩家使用油、弹药、钢材、铝这 4 种资源来开发装备。
{\hspace{15pt}}现给定目标资源量 a,b,c,d,时津风进入开发界面时 4 种资源均为 10 单位。她可以对单一资源执行以下任意一种操作(资源总量始终保持在区间 [10,300]):
{\hspace{23pt}}\bullet\,将该资源 \pm 1
{\hspace{23pt}}\bullet\,将该资源 \pm 10
{\hspace{23pt}}\bullet\,将该资源 \pm 100
{\hspace{23pt}}\bullet\,直接将该资源设为上限 300
{\hspace{23pt}}\bullet\,直接将该资源设为下限 10

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

输入描述:
{\hspace{15pt}}第一行输入整数 T\left(1\leqq T\leqq 10^{5}\right) —— 测试组数。
{\hspace{15pt}}接下来 T 行,每行输入 4 个整数 a,b,c,d\ \left(10\leqq a,b,c,d\leqq 300\right)


输出描述:
{\hspace{15pt}}对每组数据输出一个整数,表示最少操作次数。
示例1

输入

2
10 100 200 300
10 10 10 10

输出

5
0

说明

样例1:

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

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

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

第二组测试数据,开发所需的资源量就为资源初始值,所以不需要进行任何操作。
头像 丨阿伟丨
发表于 2025-08-29 17:08:23
题目链接 时津风的资源收集 题目描述 玩家有四种资源,初始值均为 10。给定四种资源的目标量 。玩家可以对任意一种资源执行以下操作,但必须保证资源量始终在 的区间内: 资源量 。 资源量 。 资源量 。 直接将资源量设为上限 。 直接将资源量设为下限 。 每种操作计为一次。求使四种资源量同时达 展开全文
头像 ikun_ac
发表于 2025-08-09 00:07:09
题目链接 时津风的资源收集 题目描述 共有四种资源:油、弹药、钢材、铝。每组数据给定目标资源量 。进入界面时四种资源初始均为 ,且任何时刻均需保持在区间 。每次操作可对单一资源进行以下之一: 将该资源 将该资源 将该资源 直接将该资源设为上限 直接将该资源设为下限 问使四种资源同时恰好 展开全文
头像 小胡放轻松
发表于 2025-12-19 20:40:53
/*先计算出从10出发到所有可能位置的最短操作次数,之后根据输入的数据直接查找就行*/ #include <iostream> #include <queue> #include <vector> using namespace std; vector<i 展开全文
头像 草海桐
发表于 2025-09-07 16:12:44
package main import ( "fmt" ) type Node struct{ value, step int } var result [301]int // 存储10到其他数值所需的操作次数 func BFS() { // 计算10到其他数值所 展开全文
头像 牛客754921490号
发表于 2025-12-20 19:16:42
#include <iostream> #include <vector> #include <deque> using namespace std; int main() { int t; cin >> t; // 达到当 展开全文
头像 牛客242693846号
发表于 2025-07-29 09:06:30
from collections import deque # 预处理:从起点10到所有[10,300]的最少步数 def bfs_1d(): dist = [float('inf')] * 301 dist[10] = 0 q = deque() q.append 展开全文
头像 小胡放轻松
发表于 2025-12-19 19:44:02
#include <iostream> #include <queue> #include <algorithm> #include <iterator> using namespace std; int main() { //输入数据 展开全文
头像 牛客40520931号
发表于 2025-12-21 23:37:40
import java.util.ArrayDeque; import java.util.Arrays; import java.util.Deque; import java.util.Scanner; //题目可以通过bfs或者dp解决 //用bfs的话需要考虑重复计算问题,如果每个数据都进行 展开全文
头像 阿彪b
发表于 2025-12-15 18:21:36
#include <bits/stdc++.h> using namespace std; int bfs(int x){ queue<pair<int,int>> que; que.push({10,0}); while(!que.emp 展开全文
头像 冷艳的西红柿刷牛客
发表于 2025-10-29 15:00:41
#include <iostream> #include <queue> #include <cstring> using namespace std; int t; int dest_10[305], dest_300[305]; queue<int 展开全文