AOJ 0033 Ball
思路:二进制枚举,用了昨天学到的2^N以及与运算方法枚举。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#include <vector> #include <algorithm>
using namespace std;
int n; int ball[10]; vector<int> l; vector<int> r;
bool () { bool res = false; for (int i = 0; i < 1024; i++) { for (int j = 0; j < 10; j++) { if (i & (1 << j)) { l.push_back(ball[j]); } else { r.push_back(ball[j]); } } int lLen = l.size(); int rLen = r.size(); bool lOK = true; bool rOK = true; for (int j = 0; j < lLen - 1; j++) { if (l.at(j) > l.at(j + 1)) { lOK = false; break; } } for (int j = 0; j < rLen - 1; j++) { if (r.at(j) > r.at(j + 1)) { rOK = false; break; } } if (lOK && rOK) { res = true; break; } l.clear(); r.clear(); } return res; }
int main() { cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < 10; j++) { cin >> ball[j]; } if (solve()) { cout << "YES" << endl; } else { cout << "NO" << endl; } } return 0; }
|
近期评论