神通广大的谷友们帮我看一下为什么RE吧!!!!
查看原帖
神通广大的谷友们帮我看一下为什么RE吧!!!!
1121087
czy032321054楼主2024/12/20 23:05

RE三个点

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+5;
long long s[505][505],h,w,k,p,q,ans;
bool vis[505][505];
priority_queue<pair<long long,pair<int,int> > >Q;
void pushdown(int x,int y){
	ans+=s[x][y];
	s[x][y]=0;
	if(s[x+1][y]&&vis[x+1][y]==0&&x<=h){
		Q.push(make_pair(-s[x+1][y],make_pair(x+1,y)));
		vis[x+1][y]=1;
	}
	if(s[x-1][y]&&vis[x-1][y]==0&&x>=1){
		Q.push(make_pair(-s[x-1][y],make_pair(x-1,y)));
		vis[x-1][y]=1;
	}
	if(s[x][y+1]&&vis[x][y+1]==0&&y<=w){
		Q.push(make_pair(-s[x][y+1],make_pair(x,y+1)));
		vis[x][y+1]=1;
	}
	if(s[x][y-1]&&vis[x][y-1]==0&&y>=1){
		Q.push(make_pair(-s[x][y-1],make_pair(x,y-1)));
		vis[x][y-1]=1;
	}
}
int main(){
	cin>>h>>w>>k>>p>>q;
	for(int i=1;i<=h;i++)
		for(int j=1;j<=w;j++)
			scanf("%lld",&s[i][j]);
	vis[p][q]=1;
	pushdown(p,q);
	while((double)-Q.top().first*k<((double)ans)/(double)k){
		int x=Q.top().second.first,y=Q.top().second.second;
		Q.pop();
		pushdown(x,y);
		if(Q.empty())break;
	}
	cout<<ans;
}
2024/12/20 23:05
加载中...