05-图2. Saving James Bond - Easy Version (25)
2015-08-22 16:07
417 查看
题目地址:http://www.patest.cn/contests/mooc-ds/05-%E5%9B%BE2
题目不难, 就用队列模拟一下就行
中间是 15个单位长 直径 圆, 所以算距离的时候要注意
题目不难, 就用队列模拟一下就行
中间是 15个单位长 直径 圆, 所以算距离的时候要注意
#include <cstdio> #include <sstream> #include <cstring> #include <iostream> #include <string> #include <vector> #include <queue> #include <algorithm> #include <sstream> #include <cmath> #include <set> #include <map> #include <unordered_map> #include <stack> using namespace std; #define N 105 int n, m; typedef struct mydata{ int x; int y; mydata(int _x = 0, int _y = 0) { x = _x; y = _y; } }Point; Point a ; bool vis ; // 能否调到岸边 bool isOk(Point p) { if (50 - abs(p.x) <= m) return true; if (50 - abs(p.y) <= m) return true; return false; } vector<Point> vok; // 两点之间的距离 小于等于 m 就行了 bool isCanJmp(Point p1, Point p2) { int tmp = (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y); if (tmp <= m*m) return true; return false; } int main() { //freopen("in", "r", stdin); while (scanf("%d%d", &n, &m) != EOF) { int i; Point pt; a[0].x = 0; a[0].y = 0; vok.clear(); for (i = 1; i <= n; i++) { scanf("%d%d", &pt.x, &pt.y); a[i] = pt; if (isOk(pt)) vok.push_back(pt); } if ((int)vok.size() == 0) { printf("No\n"); } else{ for (i = 0; i <= n; i++) vis[i] = false; bool flag = false; queue<int> que; que.push(0); vis[0] = true; while (!que.empty()) { int nowI = que.front(); que.pop(); if (isOk(a[nowI])) { flag = true; break; } for (i = 0; i <= n; i++) { if (!vis[i]) { if (nowI == 0) // 15米diameter(直径)的disk { double tmpd = sqrt(a[i].x * a[i].x + a[i].y * a[i].y) - 7.5; if (tmpd <= m) { que.push(i); vis[i] = true; } } else{ if (isCanJmp(a[nowI], a[i])) { que.push(i); vis[i] = true; } } } } } if (flag) printf("Yes\n"); else printf("No\n"); } } return 0; }
相关文章推荐
- 输入流cin的状态
- 迭代(遍历)时候不可以使用集合的remove和add方法,但可使用Java迭代器的remove和add方法
- 快照与AMI的区别
- C语言-8
- 利用const_cast进行类型转换
- 从输入 URL 到页面加载完的过程中都发生了什么事情?
- Java实现单链表的一些常用操作
- js中call和apply函数
- Android如何防止apk程序被反编译
- vim常用快捷键
- C语言-7
- CodeForces 453A-周赛4补题
- 在浏览器中输入URL按下回车键后发生了什么
- 堆排序
- 数学概念——I - 数论,线性方程
- Injection of resource dependencies failed解决办法总结
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- 基本概念——类和对象
- 字符串常量与变量
- Qt 界面:窗口图标以及任务栏图标的设置