日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

石油采集(求联通区域) 2018多校寒假集训 (dfs+二分匹配)

發布時間:2023/12/10 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 石油采集(求联通区域) 2018多校寒假集训 (dfs+二分匹配) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:

鏈接:https://www.nowcoder.com/acm/contest/76/A
來源:牛客網

隨著海上運輸石油泄漏的問題,一個新的有利可圖的行業正在誕生,那就是撇油行業。如今,在墨西哥灣漂浮的大量石油,吸引了許多商人的目光。這些商人們有一種特殊的飛機,可以一瓢略過整個海面20米乘10米這么大的長方形。(上下相鄰或者左右相鄰的格子,不能斜著來)當然,這要求一瓢撇過去的全部是油,如果一瓢里面有油有水的話,那就毫無意義了,資源完全無法利用。現在,商人想要知道,在這片區域中,他可以最多得到多少瓢油。

地圖是一個N×N的網絡,每個格子表示10m×10m的正方形區域,每個區域都被標示上了是油還是水

輸入描述:

測試輸入包含多條測試數據
測試數據的第一行給出了測試數據的數目T(T<75)
每個測試樣例都用數字N(N<50)來表示地圖區域的大小,接下來N行,每行都有N個字符,其中符號’.’表示海面、符號’#’表示油面。

輸出描述:

輸出格式如下“Case X: M”(X從1開始),M是商人可以最多得到的油量。

示例1

輸入

1 6 ...... .##... ...... .#..#. .#..## ......

輸出

Case 1: 3



題意:中文題不解釋



思路:way1:dfs爆搜就OK啊,,,這么簡單的題目不知道為什么當時沒有出
way2:二分匹配

代碼1: #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int n,m; char mp[106][106]; int dx[4]={0,1,0,-1}; int dy[4]={1,0,-1,0}; int ans1,ans2; void DFS(int i,int j) {int nx,ny;if(i<0||i>=m||j<0||j>=n||mp[i][j]=='.')return ;if((i+j)%2==0)ans1++;else ans2++;mp[i][j]='.';for(int zz=0;zz<4;zz++){nx=i+dx[zz];ny=j+dy[zz];DFS(nx,ny);}return ; } int main() {int i,j,res=0;int t;cin>>t;for(int o=1;o<=t;o++){cin>>m;n=m;getchar();for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%c",&mp[i][j]);}getchar();}for(i=0;i<m;i++)for(j=0;j<n;j++){if(mp[i][j]=='#'){ans1=0;ans2=0;DFS(i,j);res+=min(ans1,ans2);}}printf("Case %d: %d\n",o,res);}return 0; }

?

代碼2:(思路簡單就不自己寫了)

#include <iostream> #include <queue> #include <algorithm> #include <string.h> #include <math.h> #include <map> using namespace std; const int maxn=2000; int girl[maxn],used[maxn],line[maxn][maxn],path[60][60],temp1,temp2; char a[60][60]; bool find(int x) {for (int i=1;i<temp2;i++)if (line[x][i]&&!used[i]) //x與i有關系 {used[i]=1;if (girl[i]==0||find(girl[i])) //名花無主或者還能騰位置; {girl[i]=x;return true;}}return false; } int main() {int t,n,ans,tt;cin>>t;tt=1;while (t--){ans=0;temp1=temp2=1;memset(line,0,sizeof(line));memset(girl,0,sizeof(girl));memset(path,0,sizeof(path));cin>>n;for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){cin>>a[i][j];if ((i+j)%2==0)path[i][j]=temp1++;elsepath[i][j]=temp2++;}for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){if ((i+j)%2==1&&a[i][j]=='#'){if (path[i-1][j]>=1&&a[i-1][j]=='#')line[path[i-1][j]][path[i][j]]=1;if (path[i+1][j]>=1&&a[i+1][j]=='#')line[path[i+1][j]][path[i][j]]=1;if (path[i][j-1]>=1&&a[i][j-1]=='#')line[path[i][j-1]][path[i][j]]=1;if (path[i][j+1]>=1&&a[i][j+1]=='#')line[path[i][j+1]][path[i][j]]=1;}}for (int i=1;i<temp1;i++){memset(used,0,sizeof(used));if (find(i))ans++;}cout<<"Case "<<tt++<<": "<<ans<<endl;} }

?

簡單題

轉載于:https://www.cnblogs.com/huangzzz/p/8446352.html

總結

以上是生活随笔為你收集整理的石油采集(求联通区域) 2018多校寒假集训 (dfs+二分匹配)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。