BZOJ1834 [ZJOI2010]network 網絡擴容

網絡流訓練好題。。。但是要給差評!蒟蒻表示這就是板子題,然后做了半個小時T T

先跑一邊最大流,得到第一問答案ans。

第二問:原先的邊不動,費用為0。

然后對每條邊在上面再加一條邊,流量為inf,費用為修改費用。

n向T連一條邊,流量為ans + k,費用為0。

跑一邊費用流即可。

?

  1 /**************************************************************
  2     Problem: 1834
  3     User: rausen
  4     Language: C++
  5     Result: Accepted
  6     Time:64 ms
  7     Memory:1296 kb
  8 ****************************************************************/
  9  
 10 #include <cstdio>
 11 #include <cstring>
 12 #include <algorithm>
 13  
 14 using namespace std;
 15 const int N = 1005;
 16 const int M = 10005;
 17 const int inf = (int) 1e9;
 18  
 19 struct Edges {
 20     int x, y, c, w;
 21 } E[M];
 22  
 23 struct edges {
 24     int next, to, f, cost;
 25     edges() {}
 26     edges(int _n, int _t, int _f, int _c) : next(_n), to(_t), f(_f), cost(_c) {}
 27 } e[M << 1];
 28  
 29 int n, m, k, last_ans;
 30 int S, T;
 31 int first[N], tot;
 32 int q[N], d[N], g[N];
 33 bool v[N];
 34  
 35 inline int read() {
 36     int x = 0, sgn = 1;
 37     char ch = getchar();
 38     while (ch < '0' || '9' < ch) {
 39         if (ch == '-') sgn = -1;
 40         ch = getchar();
 41     }
 42     while ('0' <= ch && ch <= '9') {
 43         x = x * 10 + ch - '0';
 44         ch = getchar();
 45     }
 46     return sgn * x;
 47 }
 48  
 49 inline void Add_Edges(int x, int y, int f, int c) {
 50     e[++tot] = edges(first[x], y, f, c), first[x] = tot;
 51     e[++tot] = edges(first[y], x, 0, -c), first[y] = tot;
 52 }
 53  
 54 bool bfs() {
 55     memset(d, 0, sizeof(d));
 56     q[1] = S, d[S] = 1;
 57     int l, r, x, y;
 58     for (l = r = 1; l != (r + 1) % N; (++l) %= N)
 59         for (x = first[q[l]]; x; x = e[x].next){
 60             y = e[x].to;
 61             if (!d[y] && e[x].f)
 62                 q[(++r) %= N] = y, d[y] = d[q[l]] + 1;
 63         }
 64  
 65     return d[T];
 66 }
 67    
 68 int dinic(int p, int limit) {
 69     if (p == T || !limit) return limit;
 70     int x, y, tmp, rest = limit;
 71     for (x = first[p]; x; x = e[x].next)
 72         if (d[y = e[x].to] == d[p] + 1 && e[x].f && rest) { 
 73             tmp = dinic(y, min(rest, e[x].f));
 74             rest -= tmp;
 75             e[x].f -= tmp, e[x ^ 1].f += tmp;
 76             if (!rest) return limit;
 77         }
 78     if (limit == rest) d[p] = 0;
 79     return limit - rest;
 80 }
 81    
 82 int Dinic() {
 83     int res = 0, x;
 84     while (bfs())
 85         res += dinic(S, inf);
 86     return res;
 87 }
 88  
 89 void work1() {
 90     int i;
 91     memset(first, 0, sizeof(first));
 92     for (i = tot = 1; i <= m; ++i)
 93         Add_Edges(E[i].x, E[i].y, E[i].c, 0);
 94     S = 1, T = n;
 95     printf("%d ", last_ans = Dinic());
 96 }
 97  
 98 inline int calc() {
 99     int flow = inf, x;
100     for (x = g[T]; x; x = g[e[x ^ 1].to])
101         flow = min(flow, e[x].f);
102     for (x = g[T]; x; x = g[e[x ^ 1].to])
103         e[x].f -= flow, e[x ^ 1].f += flow;
104     return flow;
105 }
106   
107 bool spfa() {
108     int x, y, l, r;
109     for (x = 1; x <= T; ++x)
110         d[x] = inf;
111     d[S] = 0, v[S] = 1, q[0] = S;
112     for(l = r = 0; l != (r + 1) % N; ++l %= N) {
113         for (x = first[q[l]]; x; x = e[x].next)
114             if (d[q[l]] + e[x].cost < d[y = e[x].to] && e[x].f) {
115                 d[y] = d[q[l]] + e[x].cost;
116                 g[y] = x;
117                 if (!v[y])
118                     q[(++r) %= N] = y, v[y] = 1;
119             }
120         v[q[l]] = 0;
121     }
122     return d[T] != inf;
123 }
124  
125 inline int work() {
126     int res = 0;
127     while (spfa())
128         res += calc() * d[T];
129     return res;
130 }
131  
132 void work2() {
133     int i;
134     memset(first, 0, sizeof(first));
135     for (i = tot = 1; i <= m; ++i) {
136         Add_Edges(E[i].x, E[i].y, E[i].c, 0);
137         Add_Edges(E[i].x, E[i].y, inf, E[i].w);
138     }
139     Add_Edges(n, n + 1, last_ans + k, 0);
140     S = 1, T = n + 1;
141     printf("%d\n", work());
142 }
143  
144 int main() {
145     int i;
146     n = read(), m = read(), k = read();
147     for (i = 1; i <= m; ++i)
148         E[i].x = read(), E[i].y = read(), E[i].c = read(), E[i].w = read();
149     work1();
150     work2();
151     return 0;
152 }
View Code

?

轉載于:https://www.cnblogs.com/rausen/p/4162739.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257894.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257894.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257894.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android 更新平臺,Android更新平臺架構方案

這篇文章是去年寫的&#xff0c;我們的兩款app一直這使用umeng的更新服務&#xff0c;但是16年umeng開始放棄更新服務&#xff0c;考慮到切換到其他更新平臺也會面臨這樣的問題&#xff0c;我開始著手自己搭建一個更新平臺。整體方案包含前后端&#xff0c;客戶端代碼封裝成jar…

setSignVisible的修改

store傳入accountReducer 1.從cookie中獲取id,avatar,nickname.2.createStore(reducer, initState)傳入reducer,可以在頁面中state.accountReducer.current_account獲取 const middleware routerMiddleware(browserHistory); let initState {};if(Cookie.hasItem("id&qu…

DGbroker故障切換示例

1.主庫故障 SQL> startup ORACLE instance started.Total System Global Area 1068937216 bytes Fixed Size 2260088 bytes Variable Size 910164872 bytes Database Buffers 150994944 bytes Redo Buffers 5517312 bytes ORA-00205: e…

html 自動觸發 事件,js自動觸發事件自定義事件

在有些情況下&#xff0c;我們需要程序邏輯自動觸發元素的事件&#xff0c;例如js提供了click()&#xff0c; form提供了reset(),submit()等方法&#xff01;在jquery中提供了trigger()方法幫助我們自動觸發事件&#xff0c;原理是什么呢&#xff1f;接下來讓我們一探究竟&…

Storm編程入門API系列之Storm的可靠性的ACK消息確認機制

概念&#xff0c;見博客 Storm概念學習系列之storm的可靠性 什么業務場景需要storm可靠性的ACK確認機制&#xff1f; 答&#xff1a;想要保住數據不丟&#xff0c;或者保住數據總是被處理。即若沒被處理的&#xff0c;得讓我們知道。 public void nextTuple() {num;System.out.…

關于 php mysql pdo cannot find driver 解決方案

1、下載 文件 或者 進入 在PHP源碼包中進入ext/pdo_mysql http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 2、解壓文件tar zxvf PDO_MYSQL-1.0.2.tgz 3、配置和編譯文件cd PDO_MYSQL-1.0.2/usr/local/php/bin/phpize./configure –with-php-config/usr/local/php/bin/php-config…

iOS網絡編程開發-數據加密

iOS網絡編程開發-數據加密 一、簡單說明 1.說明 在開發應用的時候&#xff0c;數據的安全性至關重要&#xff0c;而僅僅用POST請求提交用戶的隱私數據&#xff0c;還是不能完全解決安全問題。 如&#xff1a;可以利用軟件&#xff08;比如Charles&#xff09;設置代理服務器&am…

Codeforces 821C - Okabe and Boxes

821C - Okabe and Boxes 思路&#xff1a;模擬。因為只需要比較棧頂和當前要刪除的值就可以了&#xff0c;所以如果棧頂和當前要刪除的值不同時&#xff0c;棧就可以清空了(因為下一次的棧頂不可能出現在前面那些值中)。 代碼&#xff1a; #include<bits/stdc.h> using n…

Java中forEach, 用來遍歷數組

這里的for是Java中forEach, 用來遍歷數組的。for(int i : d) 就是遍歷int型數組d的 每一次訪問數組d的時候讀取的數據放入int型的i中。和for(int i0;i<d.length();i)是一樣的&#xff0c;但是forEach的可用場合較多。public class e1 {public static void main(String[] …

HDU -2546飯卡(01背包+貪心)

這道題有個小小的坎&#xff0c;就是低于5塊不能選&#xff0c;大于5塊&#xff0c;可以任意選&#xff0c;所以就在初始條件判斷一下剩余錢數&#xff0c;然后如果大于5的話&#xff0c;這時候就要用到貪心的思想&#xff0c;只要大于等于5&#xff0c;先找最大的那個&#xf…

圖片向上滾動字幕代碼html,如何通過制作滾動字幕的軟件實現這種片尾的向上滾動字幕效果...

如何制作滾動字幕 特殊滾動類字幕制作 向上向下向左向右滾動字幕制作效果 含拖動和消失全程 真是酷B了爽呆了&#xff0c;趕快學習吧&#xff01;電影、連續劇等影視作品片尾&#xff0c;都會在播放片尾曲時&#xff0c;出現向上滾動的字幕&#xff0c;顯示演員表、導演、編劇等…

【圖片服務器】搭建Nginx圖片服務器

一、安裝Nginx 二、安裝vsftpd 三、開始搭建Nginx圖片服務器 1、效果 例如&#xff1a;圖片通過ftp服務上傳到/home/ftpuser/www/images目錄下&#xff0c;我想通過訪問Nginx服務器來訪問ftp目錄下的圖片文件&#xff0c;該url為http://192.168.128.128/images/xxx.jpg。即使用…

JavaScript數組去重

1、數組去重&#xff1b; Array類型并沒有提供去重復的方法&#xff0c;如果要把數組的重復元素干掉&#xff0c;那得自己想辦法&#xff1a; 方法一&#xff1a;利用indexOf方法&#xff1b; var aa[1,3,5,4,3,3,1,4] function arr(arr) {var result[]for(var i0; i<arr.le…

html怎么讓方塊自動旋轉,如何使用純CSS實現一個圓環旋轉錯覺的動畫效果(附源碼)...

本篇文章給大家帶來的內容是關于如何使用純CSS實現一個圓環旋轉錯覺的動畫效果&#xff0c;有一定的參考價值&#xff0c;有需要的朋友可以參考一下&#xff0c;希望對你有所幫助。效果預覽源代碼下載https://github.com/comehope/front-end-daily-challenges代碼解讀定義 dom&…

同志亦凡人第五季/全集BQueer As Folk 5迅雷下載

同志亦凡人 第五季 Queer as Folk Season 5 (2005) 本季看點&#xff1a;這是一群生活在匹茲堡男人和男人&#xff0c;女人和女人的故事。在他們的王國里有各色人物。王國的國王Brian&#xff08;葛爾?哈羅德 Gale Harold 飾&#xff09;&#xff0c;只追求性不問愛&#xff1…

2016,請不要在公司混日子!

1、無論為誰打工&#xff0c;要為自己學東西&#xff0c;客觀上為公司創造價值。 我自己當年&#xff0c;無論我在方正給國內企業工作&#xff0c;還是我在雅虎給外國人工作&#xff0c;我都跟別人最大的不一樣&#xff0c;我從來不覺得我在給他們打工&#xff0c;我真的可能是…

數據庫作業[定時執行任務]的創建

--每月執行的作業 exec p_createjob jobnamemm,sqlselect * from syscolumns,freqtypemonth --每周執行的作業 exec p_createjob jobnameww,sqlselect * from syscolumns,freqtypeweek --每日執行的作業 exec p_createjob jobnamea,sqlselect * from syscolumns --每日執行的作…

《算法之道》精華 經典算法部分

《算法之道》精華 經典算法部分 本書作者鄒恒明&#xff0c;作者另有一本書《數據結構之弦》&#xff0c;以及《操作系統之哲學原理》都是非常好的書這本書能夠算得上是深入淺出&#xff0c;文筆非常好。作者加入了非常多自己的思考本文包含經典算法部分第十章 排序與次序 插入…

學生社團網站html,學生社團活動平臺的設計與實現.docx

PAGE 67學生社團活動平臺的設計與實現摘 要本系統立足于實現社團活動申請與審批、資源申請與審批等工作&#xff0c;面向高校中所有的社團&#xff0c;建立一個使用便捷、可靠的社團活動平臺&#xff0c;從而更方便地進行社團活動的申請、社團資源的申請及相應審批&#xff0c;…

tornado 學習筆記17 HTTPServerRequest分析

代表Http請求。 所有的屬性都是字符串型。 17.1 屬性 (1) method:請求方法類型&#xff0c;比如”GET”、”POST” (2) uri: 請求的uri (3) path:請求路徑&#xff0c;作為uri的一部分。 (4) query&#xff1a;查詢字符串&#xff1a;作為uri的一部分。 (5) version&#xff1a…