许多人说看不出与贪心什么关系,我笑了。
打第一次时思路错了,分析的时候才看出是贪心,是最优子问题;
拿第二组举例吧
375 743正确的1到5月应该是 375 375 375 -743 -743
1-5月满足亏损
当到6月时,为满足亏损,其实就是把一月的数据移到6月,其他月都一样。
无论1-5月的数据怎么排,其实1-5月的盈利或亏损都是一定的。都是375*3-743*2;
而11,12月的数据是和1,2月的数据是一样的,为了使盈利最大,故1-5月应该使盈利月份尽可能多,并使盈利的月份在前面;
故总盈利==1-5月的盈利*2+11,12月的盈利或亏损;
代码如下:
#include<iostream>
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m)
{
int i=1;
while(n*i<m*(5-i)&&i<=4)
{
i++;
}
i--;
int k=(n*i-m*(5-i))*2;
int t=2;
while(t>0)
{
if(t<=i)
k+=n;
else
k-=m;
t--;
}
if(k<=0)
cout<<"Deficit"<<endl;
else
cout<<k<<endl;
}
return 0;
}