poj-2586-Y2K Accounting Bug
2016-03-28 10:44
323 查看
传送门
题意:有一个公司,每个月要么盈利s元,要么亏损d元。这个公司没五个月做一次统计,一个共做八次统计(即。1-5, 2-6, 3-7….),这八次统计都是亏损的。求这个公司这一年最多可以盈利多少钱
运用位运算,暴力计算就行了
题意:有一个公司,每个月要么盈利s元,要么亏损d元。这个公司没五个月做一次统计,一个共做八次统计(即。1-5, 2-6, 3-7….),这八次统计都是亏损的。求这个公司这一年最多可以盈利多少钱
运用位运算,暴力计算就行了
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <vector> #include <cmath> #include <set> #include <cstring> #include <string> #include <algorithm> #define N 500 #define ll long long #define base 10000 using namespace std; int bit[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; int main(){ #ifndef ONLINE_JUDGE freopen("1.txt", "r", stdin); #endif int i, j, s, d; int a[15], sum, tmp, ans; while(cin >> s >> d){ memset(a, 0, sizeof(a)); ans = -1; tmp = 0;//tmp存放连续五个月的利润 for (i = 0; i < 4096; i++){//每个月有盈利和亏损两种情况,12个月共2^12=4096种情况, sum = 0; for (j = 0; j < 12; j++){ if (i&bit[j]){//i的某一位是1的时候,这个月是盈利的,否则是亏损的 a[j] = s; }else{ a[j] = -d; } sum += a[j]; if (j == 4){ tmp = sum; if (tmp > 0){ break; } } if (j > 4){//要求每五个月都是亏损的 tmp += (a[j]-a[j-5]); if (tmp > 0){ break; } } } if (j == 12){ ans = max(ans, sum); } } if (ans < 0){ cout << "Deficit" << endl; }else{ cout << ans << endl; } } return 0; }
相关文章推荐
- 安装Apache提示丢失VCRUNTIME140.DLL怎么办
- fork - 继承还是不继承
- JavaScript之变量
- [python]遍历字典dict的几种方法
- 青云QingCloud 推出 Android 控制台 完善移动运维平台
- android软键盘右下角按键设置
- (5)复杂置换
- HDU - 4497 GCD and LCM
- 全能系统监控工具dstat
- JavaScript利用HTML DOM进行文档操作的方法
- Solr集群搭建
- algrothm_基本数据类型和引用类型变量
- 当前工作主机的环境配置
- Error:(16, 26) 错误: 程序包android.annotation不存在
- ios - 图片自动轮播定时器(NSTimer)以及消息循环模式简介
- mysql:通用查询日志general_log
- iOS之 block,代替代理作为回调函数
- codeigniter -搭配 mssql :问题1 :执行存储过程
- 隐藏导航练习
- sql server2008R2 密钥