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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

牛客练习赛89--牛牛防疫情

發布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客练习赛89--牛牛防疫情 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

牛牛防疫情

題意:

牛牛用賣烤串賺的錢買了一款游戲,這款游戲的地圖是一個 n*n 的網格,其中有 m 個地區存在感染源(紅色),其余地區為安全區(白色)。已知一個感染源可同時將與其相鄰(上下左右)的安全區感染,被感染的安全區稱之為新發地(黃色)。一個安全區變為一個新發地需要付出大小為 c 的代價。新發地可在下一時刻作為感染源將與其相鄰的安全區感染為新的新發地。
為了遏制疫情擴散,牛牛決定采取下列兩種措施

  • 在感染源(新發地)周圍修建墻,墻可阻止疫情的擴散。但每堵墻需要付出大小為 1 的代價。
  • 任意讓疫情擴散。
  • 牛牛現在想知道采取哪種措施可以使得付出的代價最小。

    題解:

    對于每個格子要么被感染,要么被墻隔離,
    我們可以想最小割,認為與s相連的是被感染的,與t相連的是被隔離的
    如何建邊?
    源點連向每一個感染源,流量為正無窮;
    非感染源向T連流量為c
    相鄰格子之間連流量為1
    這樣如果一個格子最后不被感染,那么與相鄰的被感染的格子之間的邊就需要割掉(不再與s相連);如果被感染,就要與T之間的邊割掉(不再屬于隔離)
    題目問最小代價,就是最小割
    為了方便實驗,我們代碼中是將所有點連接T,最后答案再減去初始m個感染源的代價

    代碼:

    #include <bits/stdc++.h> using namespace std; const long long inf=2005020600; int n,m,s,t,u,v; long long w,ans,dis[520010]; int tot=1,now[520010],head[520010]; struct node {int to,net;long long val; } e[520010];inline void add(int u,int v,long long w) {e[++tot].to=v;e[tot].val=w;e[tot].net=head[u];head[u]=tot;e[++tot].to=u;e[tot].val=0;e[tot].net=head[v];head[v]=tot; }inline int bfs() { //在慘量網絡中構造分層圖memset(dis,0x3f3f3f3f3f3f3f3f,sizeof dis); // for( int i=1;i<=n*n+4;i++) dis[i]=inf;queue<int> q;q.push(s);dis[s]=0;now[s]=head[s];while(!q.empty()) {int x=q.front();q.pop();for(int i=head[x];i;i=e[i].net) {int v=e[i].to;if(e[i].val>0&&dis[v]==0x3f3f3f3f3f3f3f3f) {q.push(v);now[v]=head[v];dis[v]=dis[x]+1;if(v==t) return 1;}}}return 0; }inline int dfs(int x,long long sum) { //sum是整條增廣路對最大流的貢獻if(x==t) return sum;long long k,res=0; //k是當前最小的剩余容量 for(int i=now[x];i&&sum;i=e[i].net) {now[x]=i; //當前弧優化 int v=e[i].to;if(e[i].val>0&&(dis[v]==dis[x]+1)) {k=dfs(v,min(sum,e[i].val));if(k==0) dis[v]=inf; //剪枝,去掉增廣完畢的點 e[i].val-=k;e[i^1].val+=k;res+=k; //res表示經過該點的所有流量和(相當于流出的總量) sum-=k; //sum表示經過該點的剩余流量 }}return res; } int dx[]={0,0,0,-1,1}; int dy[]={0,-1,1,0,0}; int main() {int c;scanf("%d%d%d",&n,&m,&c);s=n*n+1;t=n*n+2;for(int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);x++,y++;int pos=(x-1)*n+y;add(s,pos,1e9); // add(pos,S,0);}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){int pos=(i-1)*n+j;add(pos,t,c);for(int k=1;k<=4;k++){int x=i+dx[k];int y=j+dy[k];if(x>=1&&x<=n&&y>=1&&y<=n)add(pos,(x-1)*n+y,1);}}} while(bfs()) {ans+=dfs(s,inf); //流量守恒(流入=流出) }printf("%lld",ans-c*m);return 0; }

    總結

    以上是生活随笔為你收集整理的牛客练习赛89--牛牛防疫情的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 少妇2做爰bd在线意大利堕落 | 成人午夜视频免费看 | 日韩成人精品一区二区 | 免费精品国产 | 在线免费看a | 波多野结衣乳巨码无在线观看 | 亚洲国产97在线精品一区 | 蜜桃视频污在线观看 | 色 综合 欧美 亚洲 国产 | 床戏高潮做进去大尺度视频 | 韩国一区二区在线播放 | 日韩精品无码一本二本三本色 | 中文字幕无码日韩专区免费 | 成年人网站在线免费观看 | 国产精品99久久久久久人 | 福利久久久 | 国产精品久久久久久久久 | 国产一区二区视频在线观看 | 蜜桃视频久久 | 热久久中文字幕 | 国产在线免费观看 | 久久视频在线免费观看 | 性生交大片免费看狂欲 | jizz内谢中国亚洲jizz | 久久久久久久久久久久电影 | 男女网站在线观看 | 国产一区二区三区视频在线播放 | 色综合久久88色综合天天6 | 男女互操视频 | 国产精品免费视频一区二区三区 | 国产第一页精品 | 久久er99热精品一区二区 | 中文字幕乱码中文字幕 | 欧美极品jizzhd欧美爆 | 欧美久久久久久久久久久久久久 | 成人理论视频 | 樱花视频在线免费观看 | 亚洲国产福利视频 | www婷婷av久久久影片 | 在线观看视频一区 | 成人动漫中文字幕 | 欧美三级一级片 | 亚洲tv在线 | 麻豆av毛片 | 人妻夜夜爽天天爽 | 激情av在线| 九色91av | 91久久精品夜夜躁日日躁欧美 | 亚洲精品久久久久久国 | 欧美成人黑人xx视频免费观看 | 日韩免费在线视频 | 三级免费黄 | 夜夜嗨av一区二区三区四区 | 老鸭窝av在线| 亚洲最大成人av | 日本一区视频在线 | 亚洲精品乱码久久久久久日本蜜臀 | 午夜视频在线观看网站 | 免费污片网站 | 久久精精品久久久久噜噜 | 亚洲天堂免费在线 | 名校风暴在线观看免费高清完整 | 在线成人免费电影 | 亚洲天堂福利 | 成人三级电影网站 | a天堂中文在线 | 亚洲国产成人一区二区精品区 | 国产一区福利 | 成人毛片视频免费看 | 久草视频免费在线观看 | 午夜一级影院 | 亚州av网 | 免费一区二区视频 | 精品看片 | 亚洲综合一区在线观看 | 国产99久久久国产精品 | 天天免费看av | 免费的一级片 | 在线色站 | 咪咪成人网 | 用力挺进新婚白嫩少妇 | 国偷自产视频一区二区久 | 国产免费久久久 | 91九色蝌蚪视频 | 人人妻人人澡人人爽人人精品 | 亚洲天堂av网站 | 黄色日皮视频 | 中文字幕18页| 中文字幕欧美在线 | 超碰下载页面 | av成人在线观看 | 日韩精品短片 | 成人国产一区二区三区精品麻豆 | 亚洲麻豆av | 欧洲精品久久久久毛片完整版 | 91亚洲一线产区二线产区 | freesex性hd公交车上 | 免费av福利| 玖玖在线免费视频 |