摘要: 题意基本是说空间中有小行星阻挡,你要从起点移动到终点,每次移动一个单位,求最短路径。 因为刚刚接触图论,乍一看以为要深搜或者广搜啥的。仔细想想之后,发现还是蛮容易的。 因为题目上的坐标包括0,不好做边界处理,索性都+1。 小行星处记为-1,在起点处记为1,步数t记为1。然后遍历吧,发现和步数一致的点时判断上下左右前后六个点是否是初始化时的0状态,是的话赋值t+1,即代表t+1步时可以到达此点。遍历前判断终点处的值是否大于0了,大于的话退出循环。然后如果遍历一遍没有找到与步数t一致的点,退出循环,测试也过了,但是可以不写。 因为起点为方便处理记为1,所以最终的答案减去1。 下面是A... 阅读全文
posted @ 2013-02-16 22:23 SF-_- 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 好玩的题。ABCD四点,三分法嵌套三分法。看代码应该更清晰一点~#include<iostream>#include<cmath>using namespace std;const double eps=1e-7;double p,q,r;struct Point{ double x,y;} A,B,C,D;double getDistance(Point a,Point b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}double cToD(Point a){ Point midl,midr; P.. 阅读全文
posted @ 2013-02-16 20:33 SF-_- 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题目偶不说了,贴代码:#include<iostream>using namespace std;int main(){ double temp,eps=1e-7; int i,sum,max,low,high,mid,ans,n,k,s[10001]; while(cin>>n>>k && (n||k)) { sum=max=0; for(i=0;i<n;i++) { cin>>temp; s[i]=(int)((temp+eps)*100); if(max... 阅读全文
posted @ 2013-02-16 20:27 SF-_- 阅读(159) 评论(0) 推荐(0) 编辑