f312. 1. 人力分配

解題

題目有提計算利潤的公式:

  • ${Y_1}={A_1} \times {X_1}^2+{B_1} \times {X_1}+{C_1}$
  • ${Y_2}={A_2} \times {X_2}^2+{B_2} \times {X_2}+{C_2}$
    我們有$n$員工要進行查找,${X_1}$跟${X_2}$都可以是1~n並且是互補的,我們可以用for迴圈去查找,並且比較大小時要把預設的值設為負無限大(因為要用max函式)

AC Code

python

from sys import stdin
a1,b1,c1=map(int,stdin.readline().strip().split())
a2,b2,c2=map(int,stdin.readline().strip().split())
n=int(stdin.readline().strip())
ans=float('-inf')
for i in range(0,n+1):
    x1=i
    x2=n-i
    y1=a1*(x1**2)+b1*x1+c1
    y2=a2*(x2**2)+b2*x2+c2
    ans=max(ans,y1+y2)
print(ans)

C++

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a1,a2,b1,b2,c1,c2,n;
int main(){
    cin>>a1>>b1>>c1;
    cin>>a2>>b2>>c2;
    cin>>n;
    ll ans=LLONG_MIN;
    for(ll i=0;i<=n;i++){
        ll x1=i;
        ll x2=n-i;
        ll y1=a1*(x1*x1)+b1*x1+c1;
        ll y2=a2*(x2*x2)+b2*x2+c2;
        ans=max(ans,y1+y2);
    }
    cout<<ans<<endl;
}