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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

poj 3680 Intervals(离散化+费用流)

發(fā)布時間:2025/3/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj 3680 Intervals(离散化+费用流) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接:http://poj.org/problem?id=3680

題意:?給定n個帶權開區(qū)間,選擇其中一些區(qū)間出來,使得權值最大并且在任意被選區(qū)間的有效點上重疊層數不超過k。

解題思路:

這題可以用費用流解決,先講講如何建圖,再分析算法的正確性。

將所有區(qū)間的前后兩個端點離散化為n個不重復的點,然后建圖:

?源點s編號0, 區(qū)間端點編號1到n, 匯點t編號n+1.

?????? 從s到1號點有邊(s, 1, k, 0)

?????? 從i號節(jié)點到i+1號節(jié)點有邊(i, i+1, INF, 0)

?????? 從n號節(jié)點到t有邊(n, t, k, 0)

?????? 如果區(qū)間(a,b)的端點a和b分別是離散化后的第i和第j個點,那么有邊(i, j, 1, -w)注意:這里花費取原本區(qū)間權值的負數,因為這樣我們最后求得的最小費用就是最大權值和的負數.

最終算出的最小費用(負值),就是最大費用的相反數。

這里摘自一片牛人的博客:

?下面分析下該構圖為什么能得到解?

?????? 從源點流出了k個流量,那么這k個流量可以選擇從i到i+1這種普通邊流(因為該邊的容量無限大),但是如果此時在i到i+1之間有另外一條區(qū)間邊時(區(qū)間邊費用為負值), 由于我們求最小費用,所有k個流量中的一個肯定會沿著這條cost為負的區(qū)間邊流. 這是如果我們算最小費用,那么就會把該區(qū)間邊的最小費用算上去一次.

?????? 同理如果i到i+1點之間除了普通邊外,同時還有2條區(qū)間邊(區(qū)間邊cost都為負值),那么明顯k個流量肯定先分出兩個1的流量分別走這兩條區(qū)間邊,剩下的才去走那些個普通邊(因為普通邊cost0,區(qū)間邊cost為負).

?????? 如果i到i+1除了普通邊1條外,還有8條權值不同的區(qū)間邊,且k=3,那么我們肯定是選權值最小的那3條區(qū)間邊去走,而不會去走另外權值大些的路.


這里的感覺就像是自來水管一樣,分流然后匯合,保證了管道內的流量不超過k

#include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<map> #include<queue> using namespace std;const int maxn = 405; const int inf = 0x3f3f3f3f; struct Edge {int from,to,flow,cost,next;Edge(){}Edge(int f,int t,int fl,int co):from(f),to(t),flow(fl),cost(co){} }; struct MCMF {int n,s,t;vector<Edge> edge;vector<int> G[maxn];int dis[maxn];int pre[maxn];bool inq[maxn];void init(int n,int s,int t){this->n = n, this->s = s, this->t = t;edge.clear();for(int i = 0; i <= n; i++) G[i].clear();}void addedge(int u,int v,int flow,int cost){edge.push_back(Edge(u,v,flow,cost));edge.push_back(Edge(v,u,0,-cost));int m = edge.size();G[u].push_back(m-2);G[v].push_back(m-1);}int spfa(){queue<int> q;memset(dis,inf,sizeof(dis));memset(pre,-1,sizeof(pre));memset(inq,false,sizeof(inq));dis[s] = 0;inq[s] = true;q.push(s);while(!q.empty()){int u = q.front();q.pop();inq[u] = false;for(int i = 0; i < G[u].size(); i++){int v = edge[G[u][i]].to;if(dis[v] > dis[u] + edge[G[u][i]].cost && edge[G[u][i]].flow > 0){dis[v] = dis[u] + edge[G[u][i]].cost;pre[v] = G[u][i];if(inq[v] == false){inq[v] = true;q.push(v);}}}}return dis[t] != inf;}int solve(){int mincost = 0,minflow;while(spfa()){minflow = inf;for(int i = pre[t]; i != -1; i = pre[edge[i].from])minflow = min(minflow,edge[i].flow);for(int i = pre[t]; i != -1; i = pre[edge[i].from]){edge[i].flow -= minflow;edge[i^1].flow += minflow;}mincost += dis[t] * minflow;}return mincost;} }MM;int x[maxn],y[maxn],w[maxn];//從1開始標號,記錄每個區(qū)間 int p[maxn];//離散化后的每個點 int num;//離散化去重后的點數目 int main() {int t;scanf("%d",&t);while(t--){int n,k; num = 0; scanf("%d%d",&n,&k); for(int i = 1; i <= n; ++i) { scanf("%d%d%d",&x[i],&y[i],&w[i]); p[num++] = x[i]; p[num++] = y[i]; } sort(p,p + num); num = unique(p,p + num) - p; map<int,int> mp;//坐標與編號的映射 for(int i = 0;i < num; ++i) mp[p[i]] = i + 1; int src=0, dst=num+1; MM.init(num+2,src,dst);MM.addedge(src,1,k,0); for(int i=1;i<=num;++i) MM.addedge(i,i+1,inf,0); for(int i=1;i<=n;++i) { MM.addedge(mp[x[i]],mp[y[i]],1,-w[i]); } printf("%d\n",-MM.solve());}return 0; }



總結

以上是生活随笔為你收集整理的poj 3680 Intervals(离散化+费用流)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产精品av一区 | 91日批 | 毛片视屏 | 欧美精品免费视频 | 一起艹在线观看 | 久久久久久久久久一级 | 激情成人av | 姐姐你真棒插曲快来救救我电影 | 在线一区| 成年人免费看黄色 | 潘金莲三级野外 | 国产中文字幕一区二区 | 91性生活| 成人性生活免费视频 | av毛片在线免费看 | 激情五月开心婷婷 | 99午夜视频| 色综合一区二区三区 | 亚洲国产精品久久 | 国产一区91精品张津瑜 | 一区二区三区伦理片 | 国产男男网站 | 中文第一页 | 午夜电影网一区 | 国产极品免费 | 黄色片中文字幕 | 女人被男人躁得好爽免费视频 | sese在线视频 | 成人一区在线观看 | 成人综合婷婷国产精品久久 | 亚洲 欧美 日韩在线 | 久久性感美女视频 | 欧美成人一级视频 | 日韩高清不卡一区 | 国产真人无码作爱视频免费 | 五月激情六月丁香 | 日本美女动态图 | 色av色| 黄色动漫在线观看 | 免费污视频 | 日韩欧美三级视频 | 国产91网址 | 少妇一级淫片免费放 | 亚洲激情社区 | 人av在线 | 免费欧美一级片 | 国产特级黄色片 | 啊灬啊灬啊灬秀婷 | 国产自产在线 | 亚洲熟妇无码一区二区三区 | 免费视频中文字幕 | 黄色国产一区二区 | 精品久久在线 | 欧美一二三区视频 | 亚洲熟妇无码av在线播放 | 国产经典久久 | 在线观看视频www | 懂色av蜜臀av粉嫩av分享吧最新章节 | 91欧美日韩国产 | 精品国产伦一区二区三 | 免费污片网站 | 永久视频在线 | 可以免费观看av | 痴汉电车在线播放 | 大伊人网 | 国产精品区一 | 国产精品久久久91 | 久久精品欧美视频 | 妺妺窝人体色www在线下载 | 韩国一区二区在线播放 | 一女三黑人理论片在线 | 国产噜噜噜| 福利亚洲| 成人欧美一区二区三区黑人冫 | 超碰在线超碰 | 国模吧无码一区二区三区 | 超碰人人插| 男人视频网 | 伊人资源网 | 奇米二区| 欧美亚洲国产日韩 | 日韩网红少妇无码视频香港 | 亚洲欧洲色图 | 三男一女吃奶添下面 | 婷婷色在线 | 久久99热这里只有精品 | 关秀媚三级 | 69视频入口| 久久婷婷av | www.日本黄色 | 91九色在线| 波多野结衣先锋影音 | 亚洲女人天堂成人av在线 | 亚洲精品久久久中文字幕痴女 | av激情网站 | a国产| 中国美女黄色一级片 | 中文字幕11页中文字幕11页 | 黄色91免费版 |