P4313 文理分科 網絡流

?其實也就卡了卡常,,,

先考慮沒有same_art和same_science 。

起點用art的流量連向每個點,該點再用science的流量連向終點,斷開哪邊相當于少了哪邊收益。

先全部收益加起來,再減去最小割即可。

那有same這些情況怎么辦呢。

考慮新建節點v,起點以same_art連向v,斷開即代表不獲得這段收益。如何避免這個點不斷開s的同時它覆蓋區的點斷開了s?再用v點向覆蓋區連權值為inf的邊,即可保證覆蓋區的點要斷則該點必斷。same_science同理,在下不加以贅述。

528ms,勉強能卡過,,

#include<bits/stdc++.h>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<deque>
#include<list>
#include<set>
#include<vector>
#include<iostream>
#define ll int
#define re register
#define inf 0x7f7f7ff
#define inl inline
#define sqr(x) (x*x)
//#define eps 1e-8
#define debug printf("debug\n");
//#pragma comment(linker, "/STACK:1024000000,1024000000")
//#pragma GCC optimize (2)
//#pragma G++ optimize (2)
using namespace std;
const ll mod=51123987;
const ll MAXN=105;
inl ll read() {re ll x = 0; re int f = 1;char ch = getchar();while(ch<'0'||ch>'9') { if(ch== '-' ) f = -1; ch = getchar(); }while(ch>='0'&&ch<='9') {x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x * f;
}
inl char readc() {char ch=getchar();while(('z'<ch||ch<'a')&&('Z'<ch||ch<'A')) ch=getchar();return ch;
}
inl void write(re ll x){if(x>=10)write(x/10);putchar(x%10+'0');
}
inl void writeln(re ll x){if(x<0) {x=-x;putchar('-');}write(x); puts("");
}
inl ll gcd(re ll x,re ll y){while(y^=x^=y^=x%=y);return x;}
inl ll Lcm(re ll a,re ll b) {return a/gcd(a,b)*b;}
inl void FR() {freopen(".in","r",stdin);freopen(".out","w",stdout);
}
inl void FC() {fclose(stdin);fclose(stdout);
}
struct edge{ll u,v,w,nxt;
}e[400005<<1];
ll ans,n,m,cnt=1,head[200005<<1],s,t,sst;
ll dx[10]={0,0,0,1,-1};
ll dy[10]={0,1,-1,0,0};
inl void adde(ll u,ll v,ll w) {e[++cnt].u=u;e[cnt].v=v;e[cnt].w=w;e[cnt].nxt=head[u];head[u]=cnt;
}
ll d[200005<<1],cur[200005<<1];
inl bool bfs() {queue<ll>Q;for(re ll i=s;i<=sst;i++) d[i]=0;Q.push(s);d[s]=1;while(!Q.empty()) {re ll x=Q.front();Q.pop();for(re ll h=head[x];h;h=e[h].nxt) {re ll v=e[h].v;if(e[h].w&&!d[v]) {d[v]=d[x]+1;if(v==t) return true ;Q.push(v);}}}return d[t];
}
ll dfs(ll x,ll limit) {if(x==t) return limit;ll used=0;for(re ll h=cur[x];h;h=e[h].nxt) {if(used==limit) break;if(d[e[h].v]==d[x]+1&&e[h].w) {ll t=dfs(e[h].v,min(limit-used,e[h].w));used+=t;e[h].w-=t;e[h^1].w+=t;}}if(!used) d[x]=0;return used;
}
int main() {
//  FR();n=read(),m=read();s=0;t=n*m+1;sst=t;for(re ll i=1;i<=n;i++) {for(re ll j=1;j<=m;j++) {re ll x=read();adde(s,(i-1)*m+j,x);adde((i-1)*m+j,s,0);ans+=x;}}for(re ll i=1;i<=n;i++) {for(re ll j=1;j<=m;j++)  {re ll x=read();adde((i-1)*m+j,t,x);adde(t,(i-1)*m+j,0);ans+=x;}}for(re ll i=1;i<=n;i++) {for(re ll j=1;j<=m;j++) {re ll x=read();ans+=x;sst++;adde(s,sst,x);adde(sst,s,0);for(re ll k=0;k<=4;k++) {re ll xx=i+dx[k],yy=j+dy[k];if(xx&&xx<=n&&yy&&yy<=m) {adde(sst,(xx-1)*m+yy,inf);adde((xx-1)*m+yy,sst,0);}}}}for(re ll i=1;i<=n;i++) {for(re ll j=1;j<=m;j++) {re ll x=read();ans+=x;sst++;adde(sst,t,x);adde(t,sst,0);for(re ll k=0;k<=4;k++) {re ll xx=i+dx[k],yy=j+dy[k];if(xx&&xx<=n&&yy&&yy<=m) {adde((xx-1)*m+yy,sst,inf);adde(sst,(xx-1)*m+yy,0);}}}}while(bfs()) {memcpy(cur,head,sizeof(cur));ans-=dfs(s,inf);}writeln(ans);
//  FC();return 0;
}

?

轉載于:https://www.cnblogs.com/20020723YJX/p/9415477.html

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

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

相關文章

23--有效的括號

文章目錄1.題目詳情2.代碼詳情1.題目詳情 給定一個只包括 ‘(’&#xff0c;’)’&#xff0c;’{’&#xff0c;’}’&#xff0c;’[’&#xff0c;’]’ 的字符串&#xff0c;判斷字符串是否有效。有效字符串需滿足&#xff1a; 左括號必須用相同類型的右括號閉合。 左括號…

11 步教你選擇最穩定的 MySQL 版本

MySQL開源數據庫有多個重要分支&#xff0c;目前擁有的分支分別為&#xff1a;MySQL Cluster、MySQL 5.1、MySQL 5.5、MySQL 6.2。每個分支都有著同樣的的MySQL數據庫版本&#xff0c;分別為&#xff1a;Development版本、Alpha版本、Beta版本、RC版本和GA版本。Development版本…

【RabbitMQ】6、rabbitmq生產者的消息確認

2019獨角獸企業重金招聘Python工程師標準>>> 通過Publisher Confirms and Returns機制&#xff0c;生產者可以判斷消息是否發送到了exchange及queue&#xff0c;而通過消費者確認機制&#xff0c;Rabbitmq可以決定是否重發消息給消費者&#xff0c;以保證消息被處理…

泛型方法

java泛型方法簡單介紹

修改jquery文件上傳插件uploadify的英文為中文

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 效果&#xff1a; 對于這種樣式的問題&#xff0c;我都是簡單粗爆的解決&#xff1a; 找到uploadify的js文件&#xff0c;通常不是js&…

24--反轉字符串中的單詞 III

文章目錄1.問題描述2. 代碼詳情1.問題描述 給定一個字符串&#xff0c;你需要反轉字符串中每個單詞的字符順序&#xff0c;同時仍保留空格和單詞的初始順序。 示例 1: 輸入: “Let’s take LeetCode contest” 輸出: “s’teL ekat edoCteeL tsetnoc” 注意&#xff1a;在字…

poj2976 Dropping tests

01分數規劃裸題 為毛二分一定要打成rmid這么惡心啊 #include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; typedef long long LL;int n,k; double a[1100…

Apache Cassandra 1.1.0 穩定版發布

Apache Cassandra團隊今天正式推出了1.1分支的首個穩定版1.1.0版本。Apache Cassandra是一套開源的分布式 NoSQL 數據庫系統&#xff0c;遵循 Apache Lience 2 協議。它最初由 Facebook 開發&#xff0c;用于儲存收件箱等簡單格式數據&#xff0c;集 Google BigTable 的數據模型…

如何僅花25美元并在3小時內完成ImageNet訓練?

譯者 | 核子可樂編輯 | Debra、VincentAI 前線導讀&#xff1a;在斯坦福大學建立的項目 DAWNBench 競賽中&#xff0c;CIFAR10 與 ImageNet 的表現引起了人們的關注&#xff0c;在目標基本一致的前提下&#xff0c;兩者的準確度分別達 94% 和 93%&#xff0c;在成本和速度上均有…

java中什么是上下文

所謂上下文&#xff0c;它是用來存儲系統的一些初始化信息&#xff0c;例如在jboss中通過配置文件指定了數據源&#xff0c;那么在jboss啟動的時候就把這個文件的相關信息加載到上下文中&#xff0c;于是在我們使用這個數據源的時候&#xff0c;就需要先獲得系統的上下文&#…

jquery文件上傳插件uploadify 講解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.名詞解釋&#xff1a; tracker服務器&#xff1a;中文叫做跟蹤器&#xff0c;主要做調度工作&#xff0c;在訪問上起負載均衡的作用。&…

POJ 1651 Multiplication Puzzle(類似矩陣連乘 區間dp)

傳送門&#xff1a;http://poj.org/problem?id1651 Multiplication PuzzleTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 13109 Accepted: 8034Description The multiplication puzzle is played with a row of cards, each containing a single positive integ…

25--最后一個單詞的長度

文章目錄1.問題描述2.代碼詳情1.問題描述 給定一個僅包含大小寫字母和空格 ’ ’ 的字符串 s&#xff0c;返回其最后一個單詞的長度。如果字符串從左向右滾動顯示&#xff0c;那么最后一個單詞就是最后出現的單詞。 如果不存在最后一個單詞&#xff0c;請返回 0 。 說明&…

MySQL 企業監控器 2.3.10 正式版發布

Oracle于近日發布了 MySQL 企業監控器 2.3.10 正式版。 MySQL企業監控器主要用于實施對數據庫進行監控和管理。通過它&#xff0c;數據庫管理員不但可以獲得高級的數據復制和數據庫監控功能&#xff0c;同時還可以簡化安裝流程。而且&#xff0c;無論是對于MySQL企業版&#xf…

Docker 跨主機網絡方案分析

PS&#xff1a;文章首發公眾號&#xff0c;歡迎大家關注我的公眾號&#xff1a;aCloudDeveloper&#xff0c;專注技術分享&#xff0c;努力打造干貨分享平臺&#xff0c;二維碼在文末可以掃&#xff0c;謝謝大家。 上篇文章介紹了容器網絡的單主機網絡&#xff0c;本文將進一步…

java中為什么使用上轉型和下轉型

為什么使用上轉型&#xff1f;因為當一個父類有很多子類&#xff0c;子類都重寫了父類的方法并加以使用。這時候&#xff0c;如果要在之前代碼讓你用其他子類來實現&#xff0c;就變得很簡單&#xff0c;只需要把A a new B();換成A a new C();&#xff08;假設B和C都繼承了A&…

session和cache的區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 以前實現數據的緩存有很多種方法&#xff0c;有客戶端的Cookie&#xff0c;有服務器端的Session和Application。 其中Cookie是保存在客…

第四個

。 轉載于:https://www.cnblogs.com/wxy2000/p/9657823.html

26-- 轉換成小寫字母

文章目錄1.問題描述2.代碼詳情1.問題描述 實現函數 ToLowerCase()&#xff0c;該函數接收一個字符串參數 str&#xff0c;并將該字符串中的大寫字母轉換成小寫字母&#xff0c;之后返回新的字符串。 示例 1&#xff1a; 輸入: “Hello” 輸出: “hello” 示例 2&#xff1a;…

java守護線程和用戶線程的區別

Java中的線程可以分為兩類&#xff0c;即用戶線程和守護線程。用戶線程是為了完成任務&#xff0c;而守護線程主要是為其他線程服務。 守護線程的唯一用途是為其他線程提供服務。守護線程會隨時中斷&#xff0c;因此不要在守護線程上使用需要釋放資源的資源&#xff0c;如輸入輸…