POJ 3276 Face The Right Way 反转
2016-11-24 17:11
393 查看
题目:
http://poj.org/problem?id=3276题意:
n头牛站成一排,有的朝前有的朝后,每次可以选定一个长度为k的区间,把区间内的牛全部反向,问最少需要反转的次数和对应的k思路:
参看挑战程序设计竞赛#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <map> #include <set> using namespace std; const int N = 5010, INF = 0x3f3f3f3f; int dir , f ; int n; int work(int k) { memset(f, 0, sizeof f); int res = 0, sum = 0; for(int i = 1; i + k - 1 <= n; i++) { if((dir[i] + sum) & 1) res++, f[i] = 1; sum += f[i]; if(i - k + 1 >= 1) sum -= f[i-k+1]; } for(int i = n - k + 2; i <= n; i++) { if((dir[i] + sum) & 1) return -1; if(i - k + 1 >= 1) sum -= f[i-k+1]; } return res; } int main() { char ch; while(~ scanf("%d", &n)) { for(int i = 1; i <= n; i++) { scanf(" %c", &ch); dir[i] = ch == 'F' ? 0 : 1; } int num = INF, k = 1; for(int i = 1; i <= n; i++) { int tmp = work(i); if(tmp >= 0 && num > tmp) num = tmp, k = i; } printf("%d %d\n", k, num); } return 0; }
相关文章推荐
- poj3276 Face The Right Way 反转问题
- POJ_3276_Face The Right Way_区间反转问题
- poj 3276--Face The Right Way(反转)
- POJ 3276 Face The Right Way [反转 (贪心)] 《挑战程序设计竞赛》 3.2
- 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 3276 Face The Right Way(开关,反转)详解(尺取+枚举两种做法)
- poj3276 Face The Right Way 反转问题
- pOJ 3276 Face The Right Way【思维 反转开关】
- 【POJ】3276 - Face The Right Way 反转
- POJ3276—Face The Right Way 【常用技巧—反转(开关问题)】
- 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 - 3276 Face The Right Way
- poj 3276 Face The Right Way
- POJ-3276 Face The Right Way