Gym 101190H Hard Refactoring
来源:互联网 发布:手机淘宝等级查询 编辑:程序博客网 时间:2024/06/05 16:29
题意:
给你一些x的区间范围,有规定的输入格式,如果在(-32768 ~ 32767)范围之间的任意整数都能在x的这些区间中,则输出 “true”,如果这些范围中的部分数在x的这些区间中,则输出并合并这些区间,如果都不在,则输出“false”;
暴力。这道题注意的细节太多,wa了太多次才发现其中的坑, 注意 x >= 5 && x <= 32769 的输出是 x >= 5;
还有
x >= 1 && x <=0 ||
x >= 5 && x <= 8
这组输出是 x >= 5 && x <= 8, (遇到一个错误区间,跳过就好)
代码:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#include <string>#include <queue>#include <stack>#include <map>#include <cmath>using namespace std;const int INF = 0x3f3f3f3f;struct Interval{ int L, R; bool operator < (const Interval &t) const { if (L != t.L) return L < t.L; return R < t.R; }} interval[1010], ans[1010];int n, vis[1010];int main(){ freopen("hard.in", "r", stdin); freopen("hard.out", "w", stdout); n = 0; memset(vis, 0, sizeof(vis)); bool ok = true; char c; string s; while (cin >> c) { cin >> s; if (s[0] == '>') { cin >> interval[n].L >> c; if (c == '|') { interval[n++].R = INF; cin >> c; } else if (c == '&') { cin >> c >> c >> s >> interval[n].R; n++; } else { interval[n++].R = INF; break; } } else if (s[0] == '<') { interval[n].L = -INF; cin >> interval[n++].R; cin >> c; if (c != '|') break; cin >> c; } } sort(interval, interval + n); int cnt = 0; for (int i = 0; i < n; i++) { if (vis[i]) continue; vis[i] = 1; ans[cnt].R = interval[i].R; ans[cnt].L = interval[i].L; for (int j = i + 1; j < n; j++) { if (vis[j]) continue; if (ans[cnt].R + 1 < interval[j].L) break; ans[cnt].R = max(ans[cnt].R, interval[j].R); vis[j] = 1; } cnt++; } if(cnt == 1) { if(ans[0].L > ans[0].R) { cout << "false" << endl; return 0; } if (ans[0].L <= -32768 && ans[0].R >= 32767) { cout << "true" << endl; return 0; } else if (ans[0].R < -32768 || ans[0].L > 32767) { cout << "false" << endl; return 0; } else { if (ans[0].L <= -32768) cout << "x <= " << ans[0].R << endl; else if (ans[0].R >= 32767) cout << "x >= " << ans[0].L << endl; else cout << "x >= " << ans[0].L << " && x <= " << ans[0].R << endl; return 0; } } bool flag = true; for (int i = 0; i < cnt; i++) { if(ans[i].L > ans[i].R) continue; if (ans[i].L <= -32768) { if(ans[i].R >= -32768 && flag) { cout << "x <= " << ans[i].R; flag = false; } else if(ans[i].R >= -32768 && !flag) cout << " ||" << endl << "x <= " << ans[i].R; } else if (ans[i].R >= 32767) { if(ans[i].L <= 32767 && flag) { cout << "x >= " << ans[i].L; flag = false; } else if(ans[i].L <= 32767 && !flag) cout << " ||" << endl << "x >= " << ans[i].L; } else { if((ans[i].L <= 32767 || ans[i].R >= -32768) && flag) { cout << "x >= " << ans[i].L << " && x <= " << ans[i].R; flag = false; } else if((ans[i].L <= 32767 || ans[i].R >= -32768) && !flag) cout << " ||" << endl << "x >= " << ans[i].L << " && x <= " << ans[i].R; } } if(flag) cout << "false" << endl; return 0;}
阅读全文
0 0
- Gym 101190H Hard Refactoring
- Hard Refactoring Gym
- Codeforces Gym 101190 (NEERC 2016) H. Hard Refactoring (模拟 + 树状数组)
- Hard Refactoring
- Codeforces Gym 100342H Hard Test 构造
- bzoj4846: [neerc2016]Hard Refactoring
- GYM 100523H
- codeforces GYM 100792H
- Gym 100712H Bridges
- Gym 100947H-Phobia
- Gym - 100735H
- Gym-101490H
- Gym 101164.H
- Gym 101246.H
- Gym 101482.H
- Gym 100825 H
- Gym 101201.H
- Gym 101617H
- go context专题(一)- go 并发编程基础设施
- 文章标题
- 【bzoj2796】 [Poi2012]Fibonacci Representation
- matlab2c使用c++实现matlab函数系列教程-conv函数
- ajax day1
- Gym 101190H Hard Refactoring
- 并查集—C
- go语言语法笔记
- 旋转向量和旋转矩阵的互转换
- Spite 和Image的区别
- webservice服务简述
- Adaboost 算法的原理与推导
- 附加数据库失败错误5120 错误950
- LeetCode 7 : Reverse Integer