POJ3278

   其实昨天完会之后,还是很失落的。去不了现场赛一个假期的努力,没有了。其实今天做了搜索之后觉得去不了也是正常的,我的水平实在是太低了。这道BFS结果我弄成了DFS。。结果一直TLE 。。后来看了DISCUSS 才发现这道题是BFS。哎,很是失落。我的搜索几乎都没有做过。这道题的还是很有收获的。其中的用队列,VIS这个数组的应用。我一直RE。完全都要疯掉了。结果 我发现我的RE不是跟DISCUSS里面的数组开小了什么的,而是一个特别弱的错误。position-1可能等于-1 。哎,弱暴了。今天才发现自己离五月份已经有3.4个月了。可是我没有很大的进步想想挺悲哀的。今天看到YK的状态“明天就是网赛了,什么都还不会”,其实想想我与他人的差距,我不能去现场赛,其实很是正常我不应该感到不爽,或者是失落。能力问题,悲伤自己的能力又有什么用。还不如用那些个时间去多做一些题。现在我是该把图论,数据结构那些东西给补起来了。我还是我服气,我还是想再战一年。无论最后的结果是什么,我只是想说:“我不会后悔现在我的决定。。。”

附代码:

#include<cstdio>
#include<cstring>
using namespace std;
struct node{
int step;
int p;
};
node queue[500010];
int h,r,i,n,k,vis[500010];
main(){

scanf("%d%d",&n,&k);
queue[0].p=n;
queue[0].step=0;
h=0;
r=1;
memset(vis,0,sizeof(vis));
vis[n]=1;
if(n>k)
printf("%d\n",n-k);
else{
//i=0;
while(queue[h].p!=k && h<r){
if(queue[h].p==k)
break;
// if(r<=100000){
if(queue[h].p-1>=0 && queue[h].p-1<=200000 && queue[h].p>k && !vis[queue[h].p-1] ){
queue[r].step=queue[h].step+1;
queue[r++].p=queue[h].p-1;
vis[queue[h].p-1]=1;
}

else{
if(queue[h].p+1<=200000 && !vis[queue[h].p+1]){
queue[r].step=queue[h].step+1;
queue[r++].p=queue[h].p+1;
vis[queue[h].p+1]=1;
}

if(queue[h].p-1>=0 && queue[h].p-1<=200000 && !vis[queue[h].p-1]){
queue[r].step=queue[h].step+1;
queue[r++].p=queue[h].p-1;
vis[queue[h].p-1]=1;
}

if(2*queue[h].p<=200000 && !vis[2*queue[h].p]){
queue[r].step=queue[h].step+1;
queue[r++].p=2*queue[h].p;
vis[2*queue[h].p]=1;
}

}
//}
h++;
}
//printf("%d\n",h);
//printf("%d\n",queue[h].p);
printf("%d\n",queue[h].step);
}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值