40分大坑填不满啊~~

P3717 [AHOI2017初中组] cover

考虑了横纵,但是斜着的呢?
by 安好en @ 2019-06-26 10:21:57


``` #include<bits/stdc++.h> using namespace std; int n,m,r,ans,xxx,yyy; bool vis[105][105],b[105][105]; int movx[10]={0,1,-1,0,1,1,-1,-1}; int movy[10]={1,0,0,-1,1,-1,1,-1}; void dfs(int x,int y){ for(int i=0;i<=7;i++){ int xx=movx[i]+x; int yy=movy[i]+y; //cout<<x<<" "<<y<<endl; if(xx>=1&&yy>=1&&xx<=n&&yy<=n&&b[xx][yy]==false&&sqrt(pow(xx-xxx,2)+pow(yy-yyy,2))<=r){ b[xx][yy]=vis[xx][yy]=true;//有可能三圆相切产生到不了的空隙 dfs(xx,yy); } } } int main(){ cin>>n>>m>>r; for(int i=1;i<=m;i++){ memset(b,false,sizeof b); cin>>xxx>>yyy; vis[xxx][yyy]=true; dfs(xxx,yyy); } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(vis[i][j]==true)ans++; } } cout<<ans; return 0; } ```
by yangchenxiao @ 2020-01-20 21:30:01


|