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