A 石油采集:https://www.nowcoder.com/acm/contest/76/A
#include <bits/stdc++.h> using namespace std; char a[55][55]; int ans1,ans2,ans,n; void DFS(int x,int y) { if( x>n || x<1 || y>n || y<1 || a[x][y]=='.' ) return; (x+y)%2 ? ans1++ : ans2++; a[x][y]='.'; DFS(x+1,y); DFS(x-1,y); DFS(x,y+1); DFS(x,y-1); } int main() { int t; scanf("%d",&t); for(int w=1;w<=t;w++) { scanf("%d",&n); for(int i=1;i<=n;i++) { getchar(); for(int j=1;j<=n;j++) scanf("%c",&a[i][j]); } ans=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { ans1=ans2=0; if(a[i][j]=='#') DFS(i,j); ans+=min(ans1,ans2); } printf("Case %d: %d ",w,ans); } return 0; }
题解:https://www.cnblogs.com/xingkongyihao/p/8444064.html
B 道路建设:https://www.nowcoder.com/acm/contest/76/B
#include <bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; struct node{ int x,y; }; int flag[105],a[105][105],dis[105],ans,n,m,c; int main() { while(~scanf("%d%d%d",&c,&n,&m)) { for(int i=1;i<=m;i++) for(int j=1;j<=m;j++) a[i][j]=INF; memset(flag,0,sizeof(flag)); int x,y,w,cnt=1,sum=0; for(int i=1;i<=n;i++) { scanf("%d%d%d",&x,&y,&w); a[x][y]=min(a[x][y],w); a[y][x]=min(a[y][x],w); } memset(dis,INF,sizeof(dis)); for(int i=1;i<=m;i++) dis[i]=a[1][i]; flag[1]=1; while(cnt<m) { int mini=INF,u; for(int i=1;i<=m;i++) if(dis[i]<mini&&!flag[i]) { mini=dis[i]; u=i; } if(mini==INF) break; flag[u]=1; cnt++; sum+=dis[u]; for(int i=1;i<=m;i++) if(!flag[i]) dis[i]=a[u][i]; } if(cnt==m&&sum<=c) printf("Yes "); else printf("No "); } }
Prim模板
C 求交集:https://www.nowcoder.com/acm/contest/76/C
#include <bits/stdc++.h> using namespace std; int a[1000005],b[1000005],n,m; int ans[1000005],k; int main() { while(~scanf("%d %d",&n,&m)) { for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<m;i++) scanf("%d",&b[i]); int i=0,j=0,k=0; while(i<n&&j<m) { if(a[i]==b[j]) ans[k++]=a[i],i++,j++; else if(a[i]>b[j]) j++; else i++; } if(k==0) printf("empty"); else { for(int i=0;i<k-1;i++) printf("%d ",ans[i]); printf("%d",ans[k-1]); } printf(" "); } return 0; }
D 小明的挖矿之旅:https://www.nowcoder.com/acm/contest/76/D
待解
E 通知小弟:https://www.nowcoder.com/acm/contest/76/E
待解
F call to your teacher:https://www.nowcoder.com/acm/contest/76/F
#include <bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; struct node{ int x,y; }; int flag[55],a[55][55],ans,n,m; int main() { while(~scanf("%d%d",&n,&m)) { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(i==j) a[i][j]=0; else a[i][j]=INF; } memset(flag,0,sizeof(flag)); int x,y,sign=0; while(m--) { scanf("%d%d",&x,&y); a[x][y]=1; } queue <int> q; q.push(1); flag[1]=1; while(!q.empty()) { int m=q.front(); q.pop(); for(int i=1;i<=n;i++) { if(a[m][i]==1&&!flag[i]) { flag[i]=1; q.push(i); if(i==n) { sign=1; break; } } } if(sign==1) break; } printf("%s ", sign ? "Yes":"No" ); } }
BFS是否可达
G 老子的意大利炮呢:https://www.nowcoder.com/acm/contest/76/G
待解
H 老子的全排列呢:https://www.nowcoder.com/acm/contest/76/H
#include <bits/stdc++.h> using namespace std; int a[10]; int main() { for(int i=0;i<8;i++) a[i]=i+1; do { for(int i=0;i<7;i++) printf("%d ",a[i]); printf("%d ",a[7]); }while(next_permutation(a,a+8)); }