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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Gym101128F:Landscaping

發布時間:2025/4/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gym101128F:Landscaping 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意

有一片h*w的草坪,要把每一行從左到右修剪一遍,每一列從上到下修剪一遍。每個草坪要么是高低要么是平地。割草機從高地到平地或者從平地到高地,需要花費a。也可以把平地變為高地或者把高地變為平地,花費為b。求出最小花費是多少。

分析

網絡流,應該也不算網絡流里的難題,建圖還是比較好想的(雖然我不會)。

當時在場上瞎幾把建圖,最后還是沒過

這場結束后問了一下二發學長,恍然大悟。

?

把草地分為兩個集合S和T,平地為S集合,高地位T集合,然后用最少的花費將兩個集合分開,那么就是最小割了。

從s(源點)向每個平地連一條容量為b的邊,從每個高地向t(匯點)連一條容量為b的邊。如果需要把平地變高地或者把高低變平地,就割這幾條邊就可以了。

每個小草坪都向左邊和下面的小草坪連雙向邊。為什么是雙向邊?因為是按照每個小草地的性質分為的兩大集合。也可以理解為有可能從平地開始,也有可能從高地開始。

然后跑dinic就可以惹~~

下面是代碼~

其實沒啥看的,建圖很簡單,dinic是網上的模板··霧

?

1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstring> 5 #include <vector> 6 #include <queue> 7 using namespace std; 8 9 #define N 5000 10 #define INF 2147483000 11 12 struct Edge 13 { 14 int from,to,cap,flow; 15 Edge(int u,int v,int c,int f):from(u),to(v),cap(c),flow(f){} 16 }; 17 18 struct Dinic 19 { 20 int n,m,s,t;//結點數,邊數(包括反向弧),源點編號,匯點編號 21 vector<Edge>edges;//邊表,dges[e]和dges[e^1]互為反向弧 22 vector<int>G[N];//鄰接表,G[i][j]表示結點i的第j條邊在e數組中的編號 23 bool vis[N]; //BFS的使用 24 int d[N]; //從起點到i的距離 25 int cur[N]; //當前弧下標 26 27 void addedge(int from,int to,int cap) 28 { 29 edges.push_back(Edge(from,to,cap,0)); 30 edges.push_back(Edge(to,from,0,0)); 31 int m=edges.size(); 32 G[from].push_back(m-2); 33 G[to].push_back(m-1); 34 } 35 36 bool bfs() 37 { 38 memset(vis,0,sizeof(vis)); 39 queue<int>Q; 40 Q.push(s); 41 d[s]=0; 42 vis[s]=1; 43 while(!Q.empty()) 44 { 45 int x=Q.front();Q.pop(); 46 for(int i=0;i<G[x].size();i++) 47 { 48 Edge&e=edges[G[x][i]]; 49 if(!vis[e.to]&&e.cap>e.flow)//只考慮殘量網絡中的弧 50 { 51 vis[e.to]=1; 52 d[e.to]=d[x]+1; 53 Q.push(e.to); 54 } 55 } 56 57 } 58 return vis[t]; 59 } 60 61 int dfs(int x,int a)//x表示當前結點,a表示目前為止的最小殘量 62 { 63 if(x==t||a==0)return a;//a等于0時及時退出,此時相當于斷路了 64 int flow=0,f; 65 for(int&i=cur[x];i<G[x].size();i++)//從上次考慮的弧開始,注意要使用引用,同時修改cur[x] 66 { 67 Edge&e=edges[G[x][i]];//e是一條邊 68 if(d[x]+1==d[e.to]&&(f=dfs(e.to,min(a,e.cap-e.flow)))>0) 69 { 70 e.flow+=f; 71 edges[G[x][i]^1].flow-=f; 72 flow+=f; 73 a-=f; 74 if(!a)break;//a等于0及時退出,當a!=0,說明當前節點還存在另一個曾廣路分支。 75 76 } 77 } 78 return flow; 79 } 80 81 int Maxflow(int s,int t)//主過程 82 { 83 this->s=s,this->t=t; 84 int flow=0; 85 while(bfs())//不停地用bfs構造分層網絡,然后用dfs沿著阻塞流增廣 86 { 87 memset(cur,0,sizeof(cur)); 88 flow+=dfs(s,INF); 89 } 90 return flow; 91 } 92 }dinic; 93 int h,w,a,b; 94 char G[55][55]; 95 const int dx[]={0,0,1,-1}; 96 const int dy[]={1,-1,0,0}; 97 int main(){ 98 scanf("%d%d%d%d",&h,&w,&a,&b); 99 dinic.s=0,dinic.t=h*w+1; 100 101 for(int i=1;i<=h;i++){ 102 for(int j=1;j<=w;j++){ 103 scanf(" %c",&G[i][j]); 104 if(G[i][j]=='.') 105 dinic.addedge(dinic.s,(i-1)*w+j,b); 106 else 107 dinic.addedge((i-1)*w+j,dinic.t,b); 108 } 109 } 110 for(int i=1;i<=h;i++){ 111 for(int j=1;j<=w;j++){ 112 int u=(i-1)*w+j; 113 int v1=i*w+j; 114 int v2=(i-1)*w+j+1; 115 if(i<h){ 116 dinic.addedge(u,v1,a);dinic.addedge(v1,u,a); 117 } 118 if(j<w){ 119 dinic.addedge(u,v2,a);dinic.addedge(v2,u,a); 120 } 121 } 122 } 123 int ans=dinic.Maxflow(dinic.s,dinic.t); 124 cout<<ans; 125 return 0; 126 } View Code

?

轉載于:https://www.cnblogs.com/LQLlulu/p/8783295.html

總結

以上是生活随笔為你收集整理的Gym101128F:Landscaping的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 午夜日韩精品 | 99国产精品国产精品九九 | 在线a视频| 成人免费看片又大又黄 | 韩日欧美 | av高清一区| 一级黄色在线观看 | 日本黄色性视频 | 一边摸内裤一边吻胸 | 成人三级在线视频 | av激情在线观看 | www.污视频| 精品久操| 国产日韩精品久久 | 日韩专区欧美专区 | 欧美顶级metart裸体全部自慰 | 国产三级视频在线 | 福利片在线播放 | 123成人网 | 成人毛片18女人 | 欧美视频网站 | 毛片久久久久久 | 无码人妻精品一区二区三应用大全 | 久久九九爱 | 葵司免费一区二区三区四区五区 | 国产精品久久久久久三级 | 91丨九色丨海角社区 | 超碰在线97观看 | 91免费视频国产 | 奇米影视四色在线 | 中文字幕欧美另类精品亚洲 | 国产一区二区精彩视频 | 91日本在线观看 | 精品日韩| 欧美爽爽爽| 玖玖热视频 | 在线一区二区三区四区五区 | 日韩一级黄色片 | 午夜h视频 | 日产mv免费观看 | 奇米网在线观看 | 国产大片黄 | 中文字幕亚洲乱码熟女一区二区 | 亚洲国产精品国自产拍av | 午夜av免费在线观看 | 成人 黄 色 免费播放 | 亚洲国产精品久久人人爱 | 本田岬av | 精品无码av一区二区三区不卡 | 美女主播福利视频 | 对白超刺激精彩粗话av | 99精品网站 | 51精品国产人成在线观看 | tube日本69第一次 | 亚洲综合网av | 放荡闺蜜高h苏桃情事h | 日本大片黄| 国产欧美一区二区三区视频在线观看 | xvideos永久免费入口 | 欧美久久久影院 | 久久久久久影视 | 欧美一卡二卡在线 | 欧美一区高清 | 毛片视频观看 | 99精品在线视频观看 | 国产成人日韩 | 欧美性生交片4 | 欧美群交射精内射颜射潮喷 | 国产伦精品一区二区三区在线 | 91av小视频| 黄色片网站免费看 | 中文字幕人妻色偷偷久久 | av一二三区| 小珊的性放荡羞辱日记 | 久久精品视频日本 | 看黄网站在线观看 | 国产色播| 毛片在线播放视频 | 古装做爰无遮挡三级 | 精品国产乱码久久久人妻 | 一级做a爱 | 欧美熟妇一区二区 | 日欧视频 | 成人91 | 国产高清视频一区二区 | 得得的爱在线视频 | 日本3p视频| 伊人久久一区二区三区 | 亚洲美女福利视频 | 最新国产在线视频 | 日韩簧片在线观看 | 男人天堂v | 蜜桃精品在线观看 | 国产精品久久久久久久久久久久久久 | 草草影院国产 | 色婷婷网| 国产精品麻豆一区二区三区 | 人妻一区二区三区四区五区 | 另类国产 |