POJ 3276(第二篇)开关问题
来源:互联网 发布:软件自带音效 编辑:程序博客网 时间:2024/06/01 13:00
之前写了一篇POJ 3276,是用mod 2实现将int类型数据优化成bool类型数据,降低了空间复杂度。在看了高斯消元法后,这一篇使用异或运算实现mod 2的加减法,又加快了几十毫秒。
/*Memory 144K Time 375MS*/#include <cstdio>#include <iostream>#include <cstring>using namespace std;int N;const int MAXN = 5000;bool dir[MAXN+1], f[MAXN+1];int calc(int K){ memset(f, 0, sizeof(f)); int res = 0; bool sumi = 0; int i; for(i=0; i+K-1<N; i++){ if(sumi^dir[i]){ res++; f[i] = 1; } if(i-K+1 < 0) sumi ^= f[i]; else sumi ^= (f[i]^f[i-K+1]); } for( ; i<N; i++){ if(sumi^dir[i]) return -1; sumi ^= f[i-K+1]; } return res;}void solve(){ int K = 1, M = N; //·ÅËõ for(int k=1; k<=N; k++){ int m = calc(k); if(m >= 0 && m < M){ M = m; K = k; } } printf("%d %d\n", K, M);}int main(){ while(scanf("%d", &N) != EOF){ char ch; int cnt = 0; while(cnt < N){ scanf("%c", &ch); if(ch == 'F') dir[cnt++] = 0; if(ch == 'B') dir[cnt++] = 1; } solve(); } return 0;}
0 0
- POJ 3276(第二篇)开关问题
- POJ 3276 (一维开关问题)
- POJ 3276 反转(开关问题)
- 开关问题--反转 poj 3276
- 开关问题1(poj 3276)
- Poj 3185(开关问题)
- 【POJ】POJ 3276 Face The Right Way (开关问题)
- poj 1830 开关问题(高斯消元(开关问题))
- POJ 3276 Face The Right Way(开关问题)
- POJ - 3276 Face The Right Way(开关问题)
- POJ 3276 Face The Right Way 反转(开关问题)
- POJ 3276:Face The Right Way (开关问题)
- POJ No.3276-FaceTheRightWay(反转、开关问题)
- POJ 3276 —— 开关问题
- poj 1830 开关灯问题(高斯消元法)
- Poj 3279 & 1222(开关问题)
- poj 1830 开关问题(高斯消元)
- poj 1830 开关问题(高斯消元)
- OpenStack云计算快速入门之二:OpenStack安装与配置
- Linux 文本 查找命令小结之grep
- 腾讯QQ企业邮箱POP3/SMTP设置
- 杭电 1392 Surround the Trees
- MFC六大核心机制之二:运行时类型识别(RTTI)
- POJ 3276(第二篇)开关问题
- cocos2dx 添加一个新建层的方法。
- Android单元测试
- 黑马程序员-java面试题-银行业务调度系统
- SCN号概述
- D:\VC98\CRT\SRC\DBGHEAP.C
- DSBase的最初的初衷
- 编程命名基本方法
- Setting Up AUTOTRACE in SQL*Plus