A.模拟
1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 5 inline void read(int &ans) { 6 static char ch = getchar(); 7 register int neg = 1; 8 ans = 0; 9 for (; !isdigit(ch); ch = getchar()) 10 if (ch == ‘-‘) neg = -1; 11 for (; isdigit(ch); ch = getchar()) 12 ans = ans * 10 + ch - ‘0‘; 13 ans *= neg; 14 } 15 16 const int N = 1001; 17 int a[N], b[N], n; 18 19 int main() { 20 read(n); bool flag = false; 21 for (int i = 0; i < n; ++i) { 22 read(a[i]), read(b[i]); 23 if (a[i] != b[i]) { 24 flag = true; 25 break; 26 } 27 } 28 if (flag) { 29 puts("rated"); return 0; 30 } 31 for (int i = 0; i < n; ++i) { 32 for (int j = i + 1; j < n; ++j) { 33 if (a[i] < a[j]) { 34 flag = true; 35 break; 36 } 37 } 38 } 39 if (flag) 40 puts("unrated"); 41 else 42 puts("maybe"); 43 return 0; 44 }
B.搜索
1 #include<cstdio> 2 #include<set> 3 #include<queue> 4 #include<vector> 5 #include<iostream> 6 using namespace std; 7 8 inline void read(int &ans) { 9 static char ch = getchar(); 10 register int neg = 1; 11 ans = 0; 12 for (; !isdigit(ch); ch = getchar()) 13 if (ch == ‘-‘) neg = -1; 14 for (; isdigit(ch); ch = getchar()) 15 ans = ans * 10 + ch - ‘0‘; 16 ans *= neg; 17 } 18 19 inline void get(int s, set < int > &si) { 20 int i = (s / 50) % 475; 21 for (int j = 0; j < 25; ++j) { 22 i = (i * 96 + 42) % 475; 23 si.insert(i + 26); 24 } 25 } 26 27 int p, x, y, ans = ~0U >> 2; 28 set < int > ss[30000]; 29 struct Node { 30 int s, m; 31 inline bool operator< (const Node &rhs) const { 32 return s < rhs.s; 33 } 34 }; 35 set < Node > e; 36 37 inline void bfs() { 38 queue < Node > q; 39 q.push((Node) {x, 0}); 40 while (!q.empty()) { 41 Node c = q.front(); q.pop(); 42 if (c.s < y || c.m >= ans) continue; 43 if (ss[c.s].empty()) get(c.s, ss[c.s]); 44 if (ss[c.s].count(p)) { 45 ans = min(ans, c.m); 46 continue; 47 } 48 q.push((Node) {c.s - 50, c.m}); 49 } 50 51 if (!ans) return; 52 while (!q.empty()) q.pop(); 53 q.push((Node) {x, 0}); 54 55 while (!q.empty()) { 56 Node c = q.front(); q.pop(); 57 if (c.s < y || c.m >= ans) continue; 58 e.insert(c); 59 if (ss[c.s].empty()) get(c.s, ss[c.s]); 60 if (ss[c.s].count(p)) { 61 ans = min(ans, c.m); 62 return; 63 } 64 if (!e.count((Node) {c.s + 100, c.m + 1})) q.push((Node) {c.s + 100, c.m + 1}); 65 if (!e.count((Node) {c.s + 50, c.m + 1})) q.push((Node) {c.s + 50, c.m + 1}); 66 } 67 } 68 69 70 int main() { 71 read(p); read(x); read(y); 72 bfs(); 73 printf("%d\n", ans); 74 return 0; 75 }
CDE 太弱了,不会。
时间: 2024-11-14 16:29:54