1 条题解

  • 1
    @ 2025-10-26 19:20:44

    #include<bits/stdc++.h>

    #define ll long long

    #define un unsigned

    #define int long long

    #define db double

    #define st string

    #define ct const

    #define xh(a,b,c) for(int a=b;a<=c;a++)

    #define wx while(1)

    #define dn(a,b,c) for(int a=b;a>=c;a--)

    #define hfans[1]=INT_MAX,ans[2]=INT_MIN,ans[3]=INT_MAX,ans[4]=INT_MIN

    using namespace std; ll n,m; char a[1010][1010]; int ans[5]; int sum; int tx[]={0,0,-1,1}; int ty[]={1,-1,0,0}; bool f[1010][1010]; void dfs(int x,int y){ f[x][y]=1; ans[1]=min(ans[1],x); ans[2]=max(ans[2],x); ans[3]=min(ans[3],y); ans[4]=max(ans[4],y); xh(i,0,3){ int X=x+tx[i],Y=y+ty[i]; if(a[X][Y]'#'&&!f[X][Y])dfs(X,Y); } } signed main(){ cin>>n>>m; xh(i,1,n)xh(j,1,m)cin>>a[i][j]; xh(i,1,n)xh(j,1,m)if(a[i][j]'#'&&!f[i][j]){ sum++; hf; dfs(i,j); xh(i1,ans[1],ans[2])xh(j1,ans[3],ans[4])if(a[i1][j1]!='#'){ printf("Bad placement."); return 0; } } printf("There are %d ships.",sum); return 0; }

    • 1

    信息

    ID
    205
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    106
    已通过
    54
    上传者