poj Y2K Accounting Bug 贪心 暑假第五题
2015-07-08 17:44
183 查看
许多人说看不出与贪心什么关系,我笑了。
打第一次时思路错了,分析的时候才看出是贪心,是最优子问题;
拿第二组举例吧
正确的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月的盈利或亏损;
代码如下:
打第一次时思路错了,分析的时候才看出是贪心,是最优子问题;
拿第二组举例吧
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; }
相关文章推荐
- 隐马尔科夫模型详解(一)
- birt报表开发入门
- HTTP状态码,超全的
- Nginx+Memcached+Tomcat集群配置实践
- 表单中 get与post提交方法的区别?
- Spring之在客户端访问RESTful业务
- canvas教程
- INNODB 页断裂(partial write)与doublewrite技术
- GRE写作必备句型
- Device Tree Usage
- APP微信支付集成
- TCP/IP 寻址
- SQLite的WAL机制
- Cell上边或者下边出现不规则长度的黑色细线
- jQuery事件代理的应用
- vc 获取网络时间
- 更换SSL证书
- 启用MySQL查询缓存
- 【算法学习笔记】66. 模拟法 数组链表 报数优化 SJTU OJ 4010 谁最有耐心
- 任务调度5-------Spring中使用timetask执行定时任务