E题求调 & How G
  • 板块灌水区
  • 楼主cyq32ent
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/12/14 21:40
  • 上次更新2024/12/15 08:22:54
查看原帖
E题求调 & How G
435347
cyq32ent楼主2024/12/14 21:40

Rt,一直WA on 01_random_64

#include<bits/stdc++.h>
using namespace std;
unsigned long long H,W,X,P,Q,S[555][555],vis[555][555],val=0;
priority_queue<pair<unsigned long long,pair<int,int>>,vector<pair<unsigned long long,pair<int,int>>>,greater<pair<unsigned long long,pair<int,int>>>>q;
int main(){
	cin>>H>>W>>X>>P>>Q;
	for(int i=1;i<=H;i++)for(int j=1;j<=W;j++)cin>>S[i][j];
	val=S[P][Q];
	int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};vis[P][Q]=1;
	for(int i=0;i<4;i++)if(S[P+dx[i]][Q+dy[i]])q.push(make_pair(S[P+dx[i]][Q+dy[i]],make_pair(P+dx[i],Q+dy[i])));
	while(q.size()){
		auto u=q.top();q.pop();
		if(vis[u.second.first][u.second.second])continue;
		vis[u.second.first][u.second.second]=1;
		if(u.first*X>=val){cout<<val;return 0;}
		val+=u.first;
		for(int i=0;i<4;i++){
			int x=u.second.first+dx[i],y=u.second.second+dy[i];
			if(S[x][y]&&!vis[x][y])q.push(make_pair(S[x][y],make_pair(x,y)));
		}
	}cout<<val<<endl;
	return 0;
}
2024/12/14 21:40
加载中...