2 条题解

  • 0
    @ 2025-10-8 16:51:54
    #include<bits/stdc++.h>
    using namespace std;
    int dx[4]={-1,1,0,0};
    int dy[4]={0,0,1,-1};
    struct node{int x,y,t;};
    int a[110][110],s[11100],n,m;
    bool v[110][110];
    
    int main()
    {
    	scanf("%d%d",&n,&m);
    	memset(v,0,sizeof(v));
    	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&a[i][j]),v[i][j]=a[i][j];
    	int stx,sty;scanf("%d%d",&stx,&sty);
    	memset(s,0,sizeof(s));
    	if(a[stx][sty]==0)return 0;
    	queue<node> Q;
    	Q.push(node{stx,sty,1});s[1]++;s[1+a[stx][sty]]--; v[stx][sty]=0;
    	while(!Q.empty())
    	{
    		for(int i=0;i<=3;i++)
    		{
    			node no=Q.front();
    			no.x+=dx[i],no.y+=dy[i];
    			if(no.x>=1&&no.x<=n&&no.y>=1&&no.y<=m)
    			if(v[no.x][no.y]==1)
    			{
    				v[no.x][no.y]=0;no.t++;
    				Q.push(no);
    				s[no.t]++;s[no.t+a[no.x][no.y]]--; 
    			}
    		}
    		Q.pop();
    	}
    	for(int i=1;i<=n*m+10;i++)s[i]=s[i-1]+s[i];
        int maxt=n*m+10;while(s[maxt]==0)maxt--;
        for(int i=1;i<=maxt;i++)printf("%d\n",s[i]);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:51:39


      #include<bits/stdc++.h>
      using namespace std;
      int dx[4]={-1,1,0,0};
      int dy[4]={0,0,1,-1};
      struct node{int x,y,t;};
      int a[110][110],s[11100],n,m;
      bool v[110][110];
      

      int main() { scanf("%d%d",&n,&m); memset(v,0,sizeof(v)); for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&a[i][j]),v[i][j]=a[i][j]; int stx,sty;scanf("%d%d",&stx,&sty); memset(s,0,sizeof(s)); if(a[stx][sty]==0)return 0; queue<node> Q; Q.push(node{stx,sty,1});s[1]++;s[1+a[stx][sty]]--; v[stx][sty]=0; while(!Q.empty()) { for(int i=0;i<=3;i++) { node no=Q.front(); no.x+=dx[i],no.y+=dy[i]; if(no.x>=1&&no.x<=n&&no.y>=1&&no.y<=m) if(v[no.x][no.y]==1) { v[no.x][no.y]=0;no.t++; Q.push(no); s[no.t]++;s[no.t+a[no.x][no.y]]--; } } Q.pop(); } for(int i=1;i<=nm+10;i++)s[i]=s[i-1]+s[i]; int maxt=nm+10;while(s[maxt]==0)maxt--; for(int i=1;i<=maxt;i++)printf("%d\n",s[i]); return 0; }








      </p>
      • 1

      【宽搜练习】火柴人的末日(简易版)

      信息

      ID
      698
      时间
      1000ms
      内存
      256MiB
      难度
      7
      标签
      递交数
      33
      已通过
      8
      上传者