POJ 3617 3069 贪心
2017-03-17 08:38
344 查看
POJ 3617 3069 贪心
两个都是贪心对于3617,每次比较从左看以及从右看的字典序,字典序小的那边直接弹出输出
然后需要注意的是输出格式每行80个字符
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #define Maxn 2000 using namespace std; int N, tot; char input[Maxn + 10]; int main() { scanf("%d", &N); for (int i = 0;i < N;++ i) { getchar(); scanf("%c", &input[i]); } int left = 0, right = N - 1; while (left <= right) { bool L = false; for (int i = 0;left + i <= right - i;++ i) if (input[left + i] < input[right - i]) { L = true; break; } else if (input[left + i] > input[right - i]) { L = false; break; } if (L) { printf("%c", input[left ++]); ++ tot; } else { printf("%c", input[right --]); ++ tot; } if (tot == 80) { printf("\n"); tot = 0; } } return 0; }
3069也是贪心,每次从最左边还没覆盖到的点开始往后走到距离R内最远点当成当前覆盖前后2*R的palantir继续往后扫就可以了
(然后这道题也是一上手没注意palantir只能放在原有的点上直接往后扫2*R结果WA了)
#include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #define Maxn 1000 using namespace std; int R, n, ans, now; int x[Maxn + 10]; int main() { while (scanf("%d%d", &R, &n), !(R == -1 && n == -1)) { ans = 0; for (int i = 0;i < n;++ i) scanf("%d", x + i); sort(x, x + n); ans = 0; int i = 0; while (i < n) { int left = x[i ++]; while (i < n && left + R >= x[i]) ++ i; int set = x[i - 1]; //printf("%d ", set); while (i < n && set + R >= x[i]) ++ i; ++ ans; } printf("%d\n", ans); } return 0; }
相关文章推荐
- 贪心基础题(区间调度问题+POJ_3617+POJ_3069)
- POJ 3617 Best Cow Line(贪心)
- poj-3617字典序最小 贪心
- POJ 3069 Saruman's Army (贪心)
- poj 3069 Saruman's Army (贪心)
- poj 3617 贪心
- Best Cow Line POJ - 3617 【贪心】
- POJ 3617 Best Cow Line (贪心)
- poj 3069 Saruman's Army 【贪心】
- POJ 3617 best cow line 贪心法
- POJ 3617 Best Cow Line (贪心)
- POJ 3069 Saruman's Army 【贪心】
- POJ-3069-Saruman's Army(Java简单贪心)
- poj-3617字典序最小 贪心
- POJ 3069 Saruman's Army(贪心+区间覆盖)
- POJ 3069 Saruman's Army(贪心)
- 贪心法 Saruman's Army POJ 3069 /acmclub 12132
- 贪心算法poj 3617,3069,3253
- POJ - 3617 Best Cow Line (贪心)
- 【贪心】POJ 3617 Best Cow Line