Я пытаюсь решить проблему на spoj (MPILOT).Динамическое программирование MPILOT
Я понял, что это динамическая проблема программирования, и я тоже пробовал ее, но это дало мне неправильный ответ. мой подход похож на получение разницы в зарплате пилота и помощника и сортировку в порядке убывания, а затем для 0 - N/2
добавить как assistant
и для N/2+1 - N
добавить как pilot
и вывести sum
. но проблема идет с возрастным состоянием, что пилот должен быть старше помощника.
Вот мой код
#include <iostream>
#include <vector>
#include <algorithm>
#define lint long long
using namespace std;
struct pilot {
lint pilotsal;
lint assistantsal;
lint diff;
};
bool compare (pilot p1, pilot p2)
{
return (p1.diff > p2.diff);
}
int main()
{
lint c,n,i;
lint sum=0,max=0;
cin >> n;
vector <pilot> pilots(n);
for(i=0;i<n;i++)
{
cin >> pilots[i].pilotsal >> pilots[i].assistantsal;
pilots[i].diff= pilots[i].pilotsal-pilots[i].assistantsal;
}
sum = max = pilots[0].assistantsal;
sort(pilots.begin()+1,pilots.end(),compare);
for(i=1;i<=n/2-1;i++)
{
sum+=pilots[i].assistantsal;
}
for(i=n/2;i<n;i++)
{
sum+=pilots[i].pilotsal;
}
cout << sum << endl;
return 0;
}
пожалуйста, дайте мне подсказку. как проверить возрастное состояние проблемы.
, пожалуйста, помогите мне с некоторым намеком, поскольку я действительно ищу, чтобы решить это. – shahwarcoder
Благодарим за редактирование, и вы можете помочь мне с этим. – shahwarcoder
Я сейчас пытаюсь решить проблему, но ничего не могу заверить. – rendon