本文主要是介绍H - High Score Gym - 101623H,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:
给你a,b,c,d四个数,d可以分配到a,b,c中,结果为 a 2 + b 2 + c 2 + 7 ∗ m i n ( a , b , c ) a^2+b^2+c^2+7*min(a,b,c) a2+b2+c2+7∗min(a,b,c),要使得结果最大。
思路:
到了某个范围肯定全部分给一个数最优,这个范围之下就枚举每个数分配了多少。
这个范围设置为100就够了。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <vector>
#include <iostream>
#include <string>
#include <cmath>using namespace std;typedef long long ll;const int maxn = 1e5 + 7;ll cal(ll a,ll b,ll c) {return a * a + b * b + c * c + 7 * min(a,min(b,c));
}int main() {int T;scanf("%d",&T);while(T--) {ll a,b,c,d;scanf("%lld%lld%lld%lld",&a,&b,&c,&d);ll ans = 0;if(d < 100) {for(ll i = 0;i <= d;i++) {for(ll j = 0;j <= d - i;j++) {ll k = d - i - j;ll da = a + i,db = b + j,dc = c + k;ans = max(ans,cal(da,db,dc));}}} else {ans = max({ans,cal(a + d,b,c),cal(a,b + d,c),cal(a,b,c + d)});}printf("%lld\n",ans);}return 0;
}
这篇关于H - High Score Gym - 101623H的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!