求助
  • 板块题目总版
  • 楼主Jerry_Gong01
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/30 20:50
  • 上次更新2024/7/30 22:04:44
查看原帖
求助
1384123
Jerry_Gong01楼主2024/7/30 20:50

R167451744 100分求助,哪位大佬指点一下怎么优化啊?

#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
#define int long long
int n, k;
int ans[100000];
int m[5];
signed main()
{
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> m[0];
		cin >> m[1];
		cin >> m[2];
		cin >> m[3];
		cin >> m[4];
		sort(m, m + 5);
		k = m[1]-m[0];
        m[1]-=k;
        m[2]-=k;
        m[3]-=k;
        m[4]-=k;
		while (m[0]!=0)
		{
			m[1]--;
			m[2]--;
			m[3]--;
            m[4]--;
			k++;
			sort(m, m + 5);
		}
		ans[i] = k + m[1];
	}
	for (int p = 0; p < n; p++)
	{
		cout << ans[p] << endl;
	}
	return 0;
}

题目: 题目描述

牛牛今年上幼儿园了,老师叫他学习减法。老师给了他五个数字,他每次操作可以选择其中的四个数字减一,减一之后的数字不能小于零——因为牛牛还没有接触过负数。

现在牛牛想知道,自己最多可以进行多少次这样的操作?但是他根本不会做,于是他把这个问题交给了你。

他相信你一定可以帮他解决这个幼儿园的问题。

输入格式

输入第一行包含一行一个正整数 t ,表示有 t 组数据,接下来每行包含五个正整数,表示老师给出的五个数字 ? , ? , ? , ? , ? ( 1 ≤ ? , ? , ? , ? , ? ≤ 1 0 ^ 9 )

输出格式

输出 t 行,对于每组测试数据输出一行一个正整数表示答案。

输入输出样例

输入 :

2

5 4 3 2 1

10000 1 1 1 1

输出 :

3

1

说明/提示

对于样例 1 来说,前两次选择前四个数字,两次操作使得这四个数字全部减二,此时这五个数字变为 [3,2,1,0,1],那么还可以选择第 1 2 3 5 这四个数字再进行减一,得到 [2,1,0,0,0],总共进行了 3 次操作。

对于 40% 的数据,有 1 ≤ t ≤ 5000 , 1 ≤ a , b , c , d , e ≤ 100

对于 100% 的数据,有 1 ≤ t ≤ 1 0 ^ 5 , 1 ≤ a , b , c , d , e ≤ 1 0 ^ 9

谢大佬求助

2024/7/30 20:50
加载中...