赛时E题求调&how F,宣贯
  • 板块学术版
  • 楼主HashHacker_Peas
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/14 21:45
  • 上次更新2024/12/15 08:45:17
查看原帖
赛时E题求调&how F,宣贯
774876
HashHacker_Peas楼主2024/12/14 21:45

rt,WA 7个点,求大佬棒条一下

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=510,dx[]={-1,1,0,0},dy[]={0,0,-1,1};
#define pii pair<int,int>
#define x first
#define y second
int h,w,p,q,ans,x,s[maxn][maxn];
bool vis[maxn][maxn];
void bfs(int px,int y){
  queue<pii>q;
  q.push(make_pair(px,y));
  while(!q.empty()){
    int fx=q.front().x,fy=q.front().y;
    q.pop();
    int flag=0;
    vis[fx][fy]=true;
    //cout<<fx<<" "<<fy<<"\n";
    for(int i=0;i<4;i++){
      int gx=fx+dx[i],gy=fy+dy[i];
      if(gx>=1&&gx<=h&&gy>=1&&gy<=w){
        double l=(double)1.0*s[gx][gy],r=(double)ans*1.0/x*1.0;
        //cout<<l<<" "<<r<<"\n";
        if(r>l&&!vis[gx][gy])
          flag++,ans+=s[gx][gy],q.push(make_pair(gx,gy)),vis[gx][gy]=true;//,cout<<"x";
      }
    }
    if(flag&&flag<4)
        q.push(make_pair(fx,fy));
    //cout<<"ok";
  }
}
signed main(){
  scanf("%lld%lld%lld%lld%lld",&h,&w,&x,&p,&q);
  for(int i=1;i<=h;i++)
    for(int j=1;j<=w;j++)
      scanf("%lld",&s[i][j]);
  ans=s[p][q];
  bfs(p,q);
  printf("%lld",ans);
  return 0;
}

验证码MCDX祭

2024/12/14 21:45
加载中...