codeforces B. Ping-Pong (Easy Version) 解题报告
2014-01-23 17:06
351 查看
题目链接:http://codeforces.com/problemset/problem/320/B
题目意思:有两种操作:"1 x y" (x < y) 和 "2 a b" (a ≠ b) 。 问对于的"2 a b" 询问,能否从第a行的区间到达第b行的区间(行的数量是以:"1 x y" 来统计的,不包括"2 a b"这些行),当然可以直达,也可以借助某些区间间接到达。假设给定一个区间为 (a, b) ,能到达区间 (c, d) 的条件需要满足 c < a < d 或者c < b < d 。以题目中的数据为例,
对于第3行的 2 1 2,即问从第1行:1 1 5 是否可以到达第2行的 1 5 11,这明显是不能的,因为 5 < 1 < 11 和 5 < 5 < 11 都不满足。而第5行的 2 1 2 则是可以的,因为可以借助1 2 9 这个桥梁:(1 5) ——> (2 9) ——> (5 11)。理由是 2 < 5 < 9 和 5 < 9 < 11。
其实这条题目的解决方法是搜索,以下用dfs来解决
题目意思:有两种操作:"1 x y" (x < y) 和 "2 a b" (a ≠ b) 。 问对于的"2 a b" 询问,能否从第a行的区间到达第b行的区间(行的数量是以:"1 x y" 来统计的,不包括"2 a b"这些行),当然可以直达,也可以借助某些区间间接到达。假设给定一个区间为 (a, b) ,能到达区间 (c, d) 的条件需要满足 c < a < d 或者c < b < d 。以题目中的数据为例,
5 1 1 5 1 5 11 2 1 2 1 2 9 2 1 2
对于第3行的 2 1 2,即问从第1行:1 1 5 是否可以到达第2行的 1 5 11,这明显是不能的,因为 5 < 1 < 11 和 5 < 5 < 11 都不满足。而第5行的 2 1 2 则是可以的,因为可以借助1 2 9 这个桥梁:(1 5) ——> (2 9) ——> (5 11)。理由是 2 < 5 < 9 和 5 < 9 < 11。
其实这条题目的解决方法是搜索,以下用dfs来解决
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; const int maxn = 100 + 10; int a[maxn], b[maxn], ans[maxn]; int n; void dfs(int k) { int i; ans[k] = 1; // 可以到达第k行的区间 for (i = 1; i <= n; i++) { if (a[k] > a[i] && a[k] < b[i] && !ans[i]) // !ans[i]的使用防止下一次又重复访问第 i 行的区间,致使不停的无限循环 dfs(i); else if (b[k] > a[i] && b[k] < b[i] && !ans[i]) dfs(i); } } int main() { int i, t1, t2, choice, len; while (scanf("%d", &len) != EOF) { n = 0; for (i = 1; i <= len; i++) { memset(ans, 0, sizeof(ans)); // 这个很重要,每次询问都要清空,询问之间是互相独立的 scanf("%d", &choice); if (choice == 1) { n++; scanf("%d%d", &a , &b ); } else if (choice == 2) { scanf("%d%d", &t1, &t2); dfs(t1); if (ans[t2]) // 如果可以到达第t2行的区间 puts("YES"); else puts("NO"); } } } return 0; }
相关文章推荐
- hdu_Palindromes _easy version_解题报告
- POJ-1152 An Easy Problem! 解题报告(数论) 是不是N进制数
- UVAlive 5869 Airport 解题报告
- POJ 2503 解题报告
- NOI 2001 食物链 解题报告 (并查集)
- 【解题报告】Educational Codeforces Round 21
- POJ_1067 取石子游戏解题报告
- HDU1010 Tempter of the Bone 解题报告--dfs
- poj解题报告——1019
- [bzoj4664] Count 解题报告
- LeetCode63 Unique Paths II 解题报告
- [SDOI2010]地精部落解题报告
- 【cqbzoj1510】 遇见 滚动数组 dp 解题报告
- [Leetcode] 164. Maximum Gap 解题报告
- 2013 Multi-University Training Contest 3 解题报告(更新中)
- 【LeetCode】Flatten Binary Tree to Linked List 解题报告
- Leetcode解题报告:74. Search a 2D Matrix
- 【LeetCode】51.N-Queens(hard)解题报告
- POJ 3126 Prime Path 解题报告(BFS & 双向BFS)
- Longest Substring Without Repeating Characters解题报告