luogu P4012 深海机器人问题

// luogu-judger-enable-o2
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm> #define INF 0x7fffffff
const int maxn = 2007;
using std::min;
using std::queue;
int dis[maxn];bool vis[maxn];
inline int read() {
int x=0,f=1;
char c=getchar() ;
while(c<'0'||c>'9') {if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
return x*f;
}
int S,T,n,m,pre[maxn],Min_Cost;
struct node{
int u,v,cost,flow,next;
}edge[(maxn*10)<<1];
int num=1,head[maxn];
void add_edge(int u,int v,int w,int cost) {
edge[++num].v=v;edge[num].u=u;edge[num].flow=w;edge[num].cost=cost,edge[num].next=head[u],head[u]=num;
}
bool spfa() {
memset(vis,0,sizeof vis);
memset(dis,0x3f,sizeof dis);
queue<int>que;
que.push(S);vis[S]=1,dis[S]=0;
while(!que.empty()) {
int x=que.front();que.pop();
for(int i=head[x];i;i=edge[i].next ) {
int v=edge[i].v;
if(dis[x]+edge[i].cost<dis[v]&&edge[i].flow>0) {
pre[v]=i;
dis[v]=dis[x]+edge[i].cost;
if(!vis[v])vis[v]=1,que.push(v);
}
}
vis[x]=0;
}
return dis[T]!=0x3f3f3f3f;
}
void calc() {
int MF=0x3f3f3f3f;
for(int i=T;i!=S;i=edge[pre[i]].u)
MF=min(MF,edge[pre[i]].flow);
for(int i=T;i!=S;i=edge[pre[i]].u) {
edge[pre[i]].flow-=MF;
edge[pre[i]^1].flow+=MF;
Min_Cost+=edge[pre[i]].cost*MF;
}
}
void MFMC() {
while(spfa())
calc();
}
void Add(int u,int v,int flow,int cost) {
add_edge(u,v,flow,cost);
add_edge(v,u,0,-cost);
}
int loc[30][32];
int main() {
n=read(),m=read();int P=read()+1;int Q=read()+1;
S=0,T=P*Q+1;
for(int cnt=0,i=1;i<=P;i++)
for(int j=1;j<=Q;j++)
loc[i][j]=++cnt;
for(int i=1;i<=P;i++)
for(int j=1;j<=Q-1;j++)
Add(loc[i][j],loc[i][j+1],1,-read()),
Add(loc[i][j],loc[i][j+1],INF,0);
for(int j=1;j<=Q;j++)
for(int i=1;i<=P-1;i++)
Add(loc[i][j],loc[i+1][j],1,-read()),
Add(loc[i][j],loc[i+1][j],INF,0);
for(int a,b,c,i=1;i<=n;i++) {
a=read(),b=read(),c=read();
Add(S,loc[b+1][c+1],a,0);
}
for(int a,b,c,i=1;i<=m;i++) {
a=read(),b=read(),c=read();
Add(loc[b+1][c+1],T,a,0);
}
MFMC();
printf("%d\n",-Min_Cost);
return 0;
}

luogu P4012 深海机器人问题的更多相关文章

  1. (luogu P4012)深海机器人问题 [TPLY]

    网页链接 https://www.luogu.org/problemnew/show/4012 做题背景 在不久的将来,人工智能发展使得人类大量失业,也使得现在的我们做[深海机器人问题]做得想死... ...

  2. 洛谷 P4012 深海机器人问题【费用流】

    题目链接:https://www.luogu.org/problemnew/show/P4012 洛谷 P4012 深海机器人问题 输入输出样例 输入样例#1: 1 1 2 2 1 2 3 4 5 6 ...

  3. P4012 深海机器人问题

    \(\color{#0066ff}{题目描述}\) 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人 ...

  4. 洛谷P4012 深海机器人问题(费用流)

    题目描述 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生物标本.沿途生 ...

  5. 洛谷P4012 深海机器人问题(费用流)

    传送门 图给的好坑……还得倒过来…… 用大佬的图做个示范 我们考虑左图吧 把每一个点向下连边,容量$1$,费用为给出的价值(表示一个机器人可以过去取得标本) 再连一条边,容量$inf$,费用$0$(表 ...

  6. 洛谷 P4012 深海机器人问题 【最大费用最大流】

    和火星那个有点像,但是这个价值直接在路径上,不用拆点,对于每条价值为w的边(i,j),连接(i,j,1,w)(i,j,inf,0),表示价值只能取一次,然后连接源点和所有出发点(s,i,k,0),所有 ...

  7. [洛谷P4012] [网络流24题] 深海机器人问题

    Description 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生 ...

  8. 【网络流24题】No. 20 深海机器人问题 (费用流)

    [题意] 深海资源考察探险队的潜艇将到达深海的海底进行科学考察.潜艇内有多个深海机器人. 潜艇到达深海海底后, 深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生物标本. 沿 ...

  9. 【刷题】LOJ 6224 「网络流 24 题」深海机器人问题

    题目描述 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生物标本.沿途生 ...

随机推荐

  1. 【NOIP模拟赛】Drink 二维链表+模拟

    我觉得这道题的主旨应该是模拟,但是如果说他是二维链表的話也不為過.這道題的主體思路就是把原來旋轉點的O(n^2)變成了旋轉邊界的O(n).怎麼旋轉邊界呢,就好像是把原來的那些點都於上下左右四個點連線, ...

  2. 【NOIP模拟赛】 permutation 数学(打表)

    biubiu~~~ 这道题卡读题卡得很死......首先他告诉我们读循环的时候要顺着圈读,然后又说这个圈在数列上要以最大数开始读,而且以这样的循环的首数排序,得到的序列与原序列一样那么他就是可行序列, ...

  3. Ubuntu下安装LNMP之独立添加php扩展模块

    使用php的过程中,发现某个扩展没有添加,又不想重新编译php,这个时候我们就需要单独添加需要的扩展模块. 下面以mysqli扩展模块为例,具体介绍安装步骤. 1.安装mysql 具体参考:Ubunt ...

  4. POJ2492:A Bug's Life(种类并查集)

    A Bug's Life Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 45757   Accepted: 14757 题 ...

  5. linux之scp命令

    linux之cp/scp命令+scp命令详解   名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... dire ...

  6. WebKit学习资源

    1.http://blog.csdn.net/dlmu2001/article/category/741748    红心地瓜 2.http://blog.csdn.net/cnnzp/article ...

  7. GTK+与MFC不完全对比

    转载自:http://tech.ddvip.com/2007-11/119640973738229.html 1. 两者都是基于面向对象设计的.尽管MFC是用C++写的,而GTK+是用C写的,但思想都 ...

  8. JavaScript 页面间传值

    转自:http://blog.csdn.net/qq380107165/article/details/7330612 一:JavaScript静态页面值传递之URL篇 能过URL进行传值,把要传递的 ...

  9. jsp中路径的问题。。。

    刚刚学jsp的时候都是从看别人的代码,模仿着做,但是这样也有看不懂的地方,这个相对路径和绝对路径就让我纠结了好久..所以我自己弄了一个demo实验了一下,试验出结果了,但是不明白原理,纠结了一天,终于 ...

  10. [bzoj1009][HNOI2008]GT考试——KMP+矩阵乘法

    Brief Description 给定一个长度为m的禁止字符串,求出长度为n的字符串的个数,满足: 这个字符串的任何一个字串都不等于给定字符串. 本题是POJ3691的弱化版本. Algorithm ...