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 题」深海机器人问题
题目描述 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生物标本.沿途生 ...
随机推荐
- 【BZOJ 3232】圈地游戏 二分+SPFA判环/最小割经典模型
最小割经典模型指的是“一堆元素进行选取,对于某个元素的取舍有代价或价值,对于某些对元素,选取后会有额外代价或价值”的经典最小割模型,建立倒三角进行最小割.这个二分是显然的,一开始我也是想到了最小割的那 ...
- POI2007 MEG-Megalopolis [树状数组]
MEG-Megalopolis 题目描述 Byteotia has been eventually touched by globalisation, and so has Byteasar the ...
- SCOI2008奖励关 [状压dp]
题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再 ...
- Install Rancher server
1.pre-requirement: sudo nmtui # sudo hostnamectl set-hostname <hostname> $ sudo hostnamectl se ...
- SpringMVC——说说视图解析器
学习SpringMVC——说说视图解析器 各位前排的,后排的,都不要走,咱趁热打铁,就这一股劲我们今天来说说spring mvc的视图解析器(不要抢,都有位子~~~) 相信大家在昨天那篇如何获取请 ...
- js获取当前url地址参数中文乱码问题
网上看了一些关于此问题的文章,都说的不清不楚,有些更是乱七八糟,完全没法看,故此找了一篇能用的,借鉴作为笔记. //首先获取到当前页面的地址栏信息 var url = window.location. ...
- ES6(ECMAScript2015) 基础知识 浅析
1.块级作用域(let) { let fruit = “apple”; } console.log(fruit) 会报错,因为{ }大括号包含的区域为块级作用域,let在其中申明的变量只能在该块中生效 ...
- BZoj 1003 物流运输 DP+最短路
2013-09-11 09:56 W[I]代表前I天能取得的最小花费,假设在第J天更改一次路线,那么如果有 W[I]>W[J]+第j+1到第I天的最小花费+更改路线的花费(K) 那么更新W[I] ...
- bzoj 2662&bzoj 2763 SPFA变形
我们用dis[i,j]代表到i这个点,用j张票的最短路程,那么我们只需要在SPFA更新 的时候,用dis[i,j]更新dis[p,j]和dis[p,j+1]就行了 /***************** ...
- scrapy模拟知乎登录(无验证码机制)
---恢复内容开始--- spiders 文件夹下新建zhihu.py文件(从dos窗口中进入虚拟环境,再进入工程目录之后输入命令 scrapy genspider zhihu www.zhihu.c ...