dalao看看为啥样例不对,用的宽搜。
查看原帖
dalao看看为啥样例不对,用的宽搜。
244597
kabout楼主2020/8/18 17:47
#include<bits/stdc++.h>
using namespace std;
struct node{
	int len,left,time;//len表示已走路程,left表示剩余能量,time代表已用时间 
	node(int _len=0,int _left=0,int _time=0):len(_len),left(_left),time(_time){	}
}b[10001];
int m,s,t,front=0,rear=0,ans=INT_MIN;
int main()
{
	cin>>m>>s>>t;
	b[rear].left=m;
	b[rear].len=0;
	b[rear++].time=0;
	while(rear!=front)
	{
		int left=b[front].left,len=b[front].len,time=b[front].time;
		if(time>=t&&len<s)
		{
			if(++front>10000)front=0;
			continue;
		}			
		if(len>=s)
		{
			cout<<"Yes"<<endl<<time;
			return 0;
		}
		ans=max(len,ans);		
		if(left>=10)
		{		
			b[rear].left=left-10;
			b[rear].len=len+60;
			b[rear].time=time+1;
			if(++rear>10000)rear=0;
		}
		b[rear].left=left;
		b[rear].len=len+17;
		b[rear].time=time+1;
		if(++rear>10000)rear=0;		
		b[rear].left=left+4;
		b[rear].len=len;
		b[rear].time=time+1;
		if(++rear>10000)rear=0;
		if(++front>10000)front=0;
	}
//	cout<<"<<<<<<<<<<<<<<<<<<<<<"<<endl;
	cout<<"No"<<endl<<ans<<endl;
	return 0;
}
2020/8/18 17:47
加载中...