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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

P2045 方格取数加强版

發布時間:2025/3/8 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P2045 方格取数加强版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

思路

簡單的拆點
拆成入點和出點,對應點之間連一條cap=1,cost=x和一條cap=INF,cost=0的邊,然后相鄰點的出點和其他點的入點連邊,然后S有k的流量,然后跑最大費用最大流就好了

代碼

#include <cstdio> #include <algorithm> #include <cstring> #include <vector> #include <queue> using namespace std; struct Edge{int u,v,cap,cost,flow; }; const int MAXN = 10000; const int INF = 0x3f3f3f3f; vector<Edge> edges; vector<int> G[MAXN]; void addedge(int u,int v,int cap,int cost){edges.push_back((Edge){u,v,cap,cost,0});edges.push_back((Edge){v,u,0,-cost,0});int cnt=edges.size();G[u].push_back(cnt-2);G[v].push_back(cnt-1); } int d[MAXN],a[MAXN],p[MAXN],vis[MAXN],s,t; queue<int> q; bool spfa(int &flow,int &cost){memset(d,0x3f,sizeof(d));memset(p,0,sizeof(p));q.push(s);vis[s]=true;a[s]=INF;d[s]=0;while(!q.empty()){int x=q.front();q.pop();vis[x]=false;for(int i=0;i<G[x].size();i++){Edge &e = edges[G[x][i]];if(e.cap>e.flow&&d[x]+e.cost<d[e.v]){d[e.v]=d[x]+e.cost;a[e.v]=min(a[x],e.cap-e.flow);p[e.v]=G[x][i];if(!vis[e.v]){vis[e.v]=true;q.push(e.v);}}}}if(d[t]==INF)return false;flow+=a[t];cost+=d[t]*a[t];for(int i=t;i!=s;i=edges[p[i]].u){edges[p[i]].flow+=a[t];edges[p[i]^1].flow-=a[t];}return true; } void MCMF(int &flow,int &cost){flow=0,cost=0;while(spfa(flow,cost)); } int n,k; inline int id(int x,int y){return (x-1)*n+y; } int main(){scanf("%d %d",&n,&k);s=MAXN-2;t=MAXN-3;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){int x;scanf("%d",&x);addedge(id(i,j),id(i,j)+n*n,1,-x);addedge(id(i,j),id(i,j)+n*n,k-1,0); }for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){if(i<n)//xiaaddedge(id(i,j)+n*n,id(i+1,j),INF,0);if(j<n)addedge(id(i,j)+n*n,id(i,j+1),INF,0);}addedge(s,id(1,1),k,0);addedge(id(n,n)+n*n,t,INF,0);int cost,flow;MCMF(flow,cost);printf("%d\n",-cost);return 0; }

轉載于:https://www.cnblogs.com/dreagonm/p/10498439.html

總結

以上是生活随笔為你收集整理的P2045 方格取数加强版的全部內容,希望文章能夠幫你解決所遇到的問題。

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