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 深海机器人问题的更多相关文章
- (luogu P4012)深海机器人问题 [TPLY]
网页链接 https://www.luogu.org/problemnew/show/4012 做题背景 在不久的将来,人工智能发展使得人类大量失业,也使得现在的我们做[深海机器人问题]做得想死... ...
- 洛谷 P4012 深海机器人问题【费用流】
题目链接:https://www.luogu.org/problemnew/show/P4012 洛谷 P4012 深海机器人问题 输入输出样例 输入样例#1: 1 1 2 2 1 2 3 4 5 6 ...
- P4012 深海机器人问题
\(\color{#0066ff}{题目描述}\) 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人 ...
- 洛谷P4012 深海机器人问题(费用流)
题目描述 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生物标本.沿途生 ...
- 洛谷P4012 深海机器人问题(费用流)
传送门 图给的好坑……还得倒过来…… 用大佬的图做个示范 我们考虑左图吧 把每一个点向下连边,容量$1$,费用为给出的价值(表示一个机器人可以过去取得标本) 再连一条边,容量$inf$,费用$0$(表 ...
- 洛谷 P4012 深海机器人问题 【最大费用最大流】
和火星那个有点像,但是这个价值直接在路径上,不用拆点,对于每条价值为w的边(i,j),连接(i,j,1,w)(i,j,inf,0),表示价值只能取一次,然后连接源点和所有出发点(s,i,k,0),所有 ...
- [洛谷P4012] [网络流24题] 深海机器人问题
Description 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生 ...
- 【网络流24题】No. 20 深海机器人问题 (费用流)
[题意] 深海资源考察探险队的潜艇将到达深海的海底进行科学考察.潜艇内有多个深海机器人. 潜艇到达深海海底后, 深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生物标本. 沿 ...
- 【刷题】LOJ 6224 「网络流 24 题」深海机器人问题
题目描述 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生物标本.沿途生 ...
随机推荐
- Binding and styling text to a RichTextBox in WPF
http://www.codeproject.com/Articles/137209/Binding-and-styling-text-to-a-RichTextBox-in-WPF The Rich ...
- PHP 抽象类,接口,抽象方法,静态方法
1.Abstract class(抽象类) 抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 抽象类 ...
- PhoneGap之自定义插件
PhoneGap:作为原生App,Java(这里面是指Android的)与JavaScript 的通信桥梁,使得我们的混合开发更加得心应手,我是与Android结合的混合开发. 但在这里不得不吐槽一下 ...
- jQuery操纵DOM
一.基本操作 1.html() - 类似于原生DOM的innerHTML属性 *获取 - html(); *设置 - html("html代码"); 2.val() - 类似于原生 ...
- [BZOJ3238][Ahoi2013]差异解题报告|后缀数组
Description 先分析一下题目,我们显然可以直接算出sigma(len[Ti]+len[Tj])的值=(n-1)*n*(n+1)/2 接着就要去算这个字符串中所有后缀的两两最长公共前缀总和 首 ...
- 愚蠢的LCAAAAA~~~~(>_<)~~~~
很愤怒!特别愤怒!超级愤怒!!! 我LCA居然错了!!而且是那种特别愚蠢的错误 我把代码都交错了!!! silasila 话不多说,代码上特别详细了 #include<bits/stdc++.h ...
- [bzoj3098]Hash Killer 2——哈希
题目 这天天气不错,hzhwcmhf神犇给VFleaKing出了一道题: 给你一个长度为N的字符串S,求有多少个不同的长度为L的子串. 子串的定义是S[l].S[l + 1].- S[r]这样连续的一 ...
- C# 从服务器下载文件
一.//TransmitFile实现下载 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一 ...
- Linux nc (netcat) 详解
Linux nc (netcat) 详解 http://blog.csdn.net/michael493439861/article/details/7445454
- STL各个数据结构特点
STL容器特征总结 2011-11-09 11:10:50| 分类: STL|举报|字号 订阅 STL中顺序容器类和关联式容器类的主要特征如下:(1)Vector 1.内部数据结构:连续存储 ...