您的位置:首页 > 其它

poj Y2K Accounting Bug 贪心 暑假第五题

2015-07-08 17:44 183 查看
许多人说看不出与贪心什么关系,我笑了。

打第一次时思路错了,分析的时候才看出是贪心,是最优子问题;

拿第二组举例吧

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: