社区讨论

一个高中生连BFS都不会打了QAQ

P4009汽车加油行驶问题参与者 4已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mi8678zm
此快照首次捕获于
2025/11/21 09:17
4 个月前
此快照最后确认于
2025/11/21 09:17
4 个月前
查看原帖
求助大佬,这个为什么会MLE啊
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct Node{
	int x,y,Cost,Remain;
}X,Y;
int n,k,A,B,C,Min,Tx[5]={0,1,0,-1,0},Ty[5]={0,0,1,0,-1},Extra[5],Map[110][110],Dp[110][110][12];
queue<Node> Q;
template <typename T>
int Read(T &x) {
    x=0;
    int f=1;
    char c=getchar();
    while(c!='-'&&c>'9'&&c<'0')
        c=getchar();
    for(; !isdigit(c); c=getchar())
        if(c=='-')
            f=-f;
    for(; isdigit(c); c=getchar())
        x=x*10+c-'0';
    x*=f;
    if(c=='\n')
        return 1;
    else
        return 0;
}
void Write(long long x){
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9){
        Write((x-x%10)/10);
     }
    putchar(x%10+'0');
}
int main(){
	Read(n);
	Read(k);
	Read(A);
	Read(B);
	Read(C);
	Extra[3]=B;
	Extra[4]=B;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			Read(Map[i][j]);
			for(int t=1;t<=k;t++){
				Dp[i][j][t]=0x7f7f7f7f;
			}
		}
	}
	X.Cost=0;
	X.Remain=k;
	X.x=1;
	X.y=1;
	Dp[1][1][k]=0;
	Q.push(X);
	while(!Q.empty()){
		X=Q.front();
		Q.pop();
		if(X.Remain<1){
			continue;
		}
		for(int i=1;i<=4;i++){
			Y.x=X.x+Tx[i];
			Y.y=X.y+Ty[i];
			if((Y.x>n)||(Y.x<=0)||(Y.y>n)||(Y.y<=0)){
				continue;
			}
			if(Map[Y.x][Y.y]){
				Y.Remain=k;
				Y.Cost=X.Cost+A+Extra[i];
				if(Y.Cost<=Dp[Y.x][Y.y][Y.Remain]){
					Dp[Y.x][Y.y][Y.Remain]=Y.Cost;
					Q.push(Y);
				}
			}
			else{
				Y.Remain=X.Remain-1;
				Y.Cost=X.Cost+Extra[i];
				if(Y.Cost<=Dp[Y.x][Y.y][Y.Remain]){
					Dp[Y.x][Y.y][Y.Remain]=Y.Cost;
					Q.push(Y);
				}
				if(!Y.Remain){
					Y.Remain=k;
					Y.Cost=X.Cost+A+C+Extra[i];
					if(Y.Cost<=Dp[Y.x][Y.y][Y.Remain]){
						Dp[Y.x][Y.y][Y.Remain]=Y.Cost;
						Q.push(Y);
					}
				}
			}
		}
	}
	Min=0x7f7f7f7f;
	for(int i=1;i<=k;i++){
		Min=min(Min,Dp[n][n][i]);
	}
	Write(Min);
	return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...