[AGC031E] Snuke the Phantom Thief(网络流)

考虑枚举偷的珠宝的个数k,且假设它们按照坐标大小排好了序(x坐标排一次,y坐标排一次)。

那么可以将条件转化一下,

在珠宝按x坐标排好序时,
x坐标大于等于aia_iai的最多取bib_ibi个可以转化为取的前k−bik-b_ikbi个珠宝的x坐标要小于aia_iai
同理,x坐标小于等于aia_iai的最多可以取bib_ibi个可以转化为取的后k−bik-b_ikbi个珠宝的x坐标要大于aia_iai

y坐标同理。

那么这样的话,就可以计算出取的每个珠宝的x,y坐标取值范围。

接下来有两种处理方法。
法一:
在这里插入图片描述
法二:
在这里插入图片描述

/*妙!把 对区间内物品选择个数的限制 转为 选择一定数量物品时,对物品坐标范围的限制 
达到优化建图的效果*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
typedef long long ll;
const int N=400;
const int M=15000;
const int inf=2147483647;
struct Edge{int u,v,f,nxt;ll w;
}edge[M<<1];
int head[N],cnt,s,t,inque[N],pre[N];ll dis[N];
queue<int> que;
int n,m;ll ans;
struct Jewelry{int x,y;ll val;
}p[85];
struct Quiery{char ch;int a,b;
}q[325];
void add(int u,int v,int f,ll w){edge[cnt].u=u;edge[cnt].v=v;edge[cnt].w=w;edge[cnt].f=f;edge[cnt].nxt=head[u];head[u]=cnt++;edge[cnt].u=v;edge[cnt].v=u;edge[cnt].w=-w;edge[cnt].f=0;edge[cnt].nxt=head[v];head[v]=cnt++;
}
bool spfa(){memset(dis,-63,sizeof(dis));memset(inque,0,sizeof(inque));memset(pre,-1,sizeof(pre));dis[s]=0;que.push(s);inque[s]=1;while(!que.empty()){int u=que.front();que.pop();inque[u]=0;for(int i=head[u];i!=-1;i=edge[i].nxt){int v=edge[i].v;if(edge[i].f>0&&dis[v]<dis[u]+edge[i].w){dis[v]=dis[u]+edge[i].w;pre[v]=i;if(!inque[v]){que.push(v);inque[v]=1;}}}	}if(pre[t]==-1) return 0;return 1;
}
ll EK(){int flow;ll ret=0;while(spfa()){flow=inf;int x=pre[t];while(x!=-1){flow=min(edge[x].f,flow);x=pre[edge[x].u];}x=pre[t];while(x!=-1){edge[x].f-=flow;edge[x^1].f+=flow;ret+=flow*edge[x].w;x=pre[edge[x].u];}}return ret;
}
int lx[85],rx[85],ly[85],ry[85];
void solve(int k){memset(head,-1,sizeof(head));cnt=0;memset(lx+1,0,k<<2),memset(ly+1,0,k<<2),memset(rx+1,0x7f,k<<2),memset(ry+1,0x7f,k<<2);for(int i=1;i<=m;i++){if(q[i].ch=='L') lx[q[i].b+1]=max(lx[q[i].b+1],q[i].a+1);if(q[i].ch=='R'&&k>q[i].b) rx[k-q[i].b]=min(rx[k-q[i].b],q[i].a-1);if(q[i].ch=='D') ly[q[i].b+1]=max(ly[q[i].b+1],q[i].a+1);if(q[i].ch=='U'&&k>q[i].b) ry[k-q[i].b]=min(ry[k-q[i].b],q[i].a-1);}for(int i=2;i<=k;i++) lx[i]=max(lx[i],lx[i-1]),ly[i]=max(ly[i],ly[i-1]);for(int i=k-1;i;i--) rx[i]=min(rx[i],rx[i+1]),ry[i]=min(ry[i],ry[i+1]);s=0;t=k+n+n+k+1;for(int i=1;i<=k;i++){add(s,i,1,0);for(int j=1;j<=n;j++){if(lx[i]<=p[j].x&&p[j].x<=rx[i]) add(i,k+j,1,0);if(ly[i]<=p[j].y&&p[j].y<=ry[i]) add(k+n+j,k+n+n+i,1,0);}add(k+n+n+i,t,1,0);}for(int j=1;j<=n;j++) add(k+j,k+n+j,1,p[j].val);ans=max(ans,EK());
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d%lld",&p[i].x,&p[i].y,&p[i].val);scanf("%d",&m);for(int i=1;i<=m;i++)scanf("%s%d%d",&q[i].ch,&q[i].a,&q[i].b);for(int k=1;k<=n;k++) solve(k);printf("%lld\n",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛妹的游戏

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 UPD:数据保证不会有两条控制链控制的据点完全相同&#xff0c;也保证不会有某条控制链两端控制的据点相同…

.NET Core使用NLog通过Kafka实现日志收集

一、前言NET Core越来越受欢迎&#xff0c;因为它具有在多个平台上运行的原始.NET Framework的强大功能。Kafka正迅速成为软件行业的标准消息传递技术。这篇文章简单介绍了如何使用.NET(Core)和Kafka实现NLog的Target。在日常项目开发过程中&#xff0c;Java体系下Spring Boot …

[清华集训2017]无限之环(网络流)

很妙的一道题 对于每个格子&#xff0c;它合法与否&#xff0c;只跟它上下左右的相邻格子有关&#xff0c;所以可以想到黑白染色 &#xff08;用 (i,j) 表示 i 行 j 列的格子&#xff0c;我把 (ij) %2 0 的格子染成白色&#xff0c;把(ij)%2 1 的格子染成黑色&#xff09; …

ASP.NET Core 中的 ORM 之 Dapper

Dapper简介Dapper是.NET的一款轻量级ORM工具&#xff08;GitHub&#xff09;&#xff0c;也可称为简单对象映射器。在速度方面拥有微型ORM之王的称号。它是半自动的&#xff0c;也就是说实体类和SQL语句都要自己写&#xff0c;但它提供自动对象映射。是通过对IDbConnection接口…

用WinForm/WPF代码来为.NET Core 3.0功能投票

我们在5月报道过微软希望在.NET Core 3.0上运行WinForms和WPF。为了实现这个目标&#xff0c;他们正在构建一个新工具&#xff0c;该工具将允许你投票以决定他们需要把哪些API移植到.NET Core。但是&#xff0c;这不是一次直接进行的投票&#xff0c;而是基于你的应用程序正在使…

病毒扩散

链接&#xff1a; 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200429210705568.png?x-oss-processimage/waterm…

【SPFA】Party(jzoj 1328)

Party jzoj 1328 题目大意 有一个有向图&#xff0c;给你一个x&#xff0c;让你求每一个点到x再回去的最短路径&#xff0c;输出所有最短路径的最大值 输入样例 4 8 2 1 2 4 1 3 2 1 4 7 2 1 1 2 3 5 3 1 2 3 4 4 4 2 3输出样例 10 样例解释 数据范围 1⩽x⩽N⩽10001\le…

Asp.Net Core 2.2.0-preview1已经发布

原文地址 ASP.NET Core 2.2.0-preview1 now available今天我们很高兴地宣布,现在可以试用ASP.NET Core和.NET Core的下一个次要版本的第一个预览。在过去的几个月里&#xff0c;我们和社区里的许多人一起为这个版本进行开发&#xff0c;现在它已经准备好让更广泛的受众尝试它并…

UOJ284 快乐游戏鸡(树上动态规划问题、长链剖分+单调栈)

Description 一棵 n 个点的有根树&#xff0c;带点权 wi。 从 s 出发&#xff0c;希望达到 t&#xff0c;每秒可以从当前点移动到某一个儿子。 有一个死亡次数&#xff0c;初始为 0。若在某个点 i(i ! s, t) 时&#xff0c;死亡次数 ≤ wi&#xff0c;那么死亡次数自增 1&…

C#系列之聊聊.Net Core的InMemoryCache

这两天在看.net core的in memory cache&#xff0c;这里记录一下用法&#xff0c;主要涉及MemoryCache的Get&#xff0f;Set&#xff0f;Expire&#xff0f;Flush。首先我们先用dotnet命令创建一个mvc的项目&#xff0c;这里我们将使用postman来请求server&#xff0c;1dotnet …

小石的签到题

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 输入描述: 共一行&#xff0c;输入一个数 n 。 输出描述: 共一行&#xff0c;输出 “Shi” 或 “Yang”&…

CAP带你轻松玩转ASP.NETCore消息队列

CAP是什么&#xff1f;CAP是由我们园子里的杨晓东大神开发出来的一套分布式事务的决绝方案&#xff0c;是.Net Core Community中的第一个千星项目&#xff08;目前已经1656 Start&#xff09;&#xff0c;具有轻量级、易使用、高性能等特点。https://github.com/dotnetcore/CAP…

装备合成

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 输入描述: 输入包含t组数据 第一行一个整数t 接下来t行每行两个整数x,y 输出描述: 每组数据输出一行一个…

微软必应从.NET Core 2.1获得了性能提升

据微软工程师Mukul Sabharwal介绍&#xff0c;在将微软搜索引擎必应迁移到.NET Core 2.1之后&#xff0c;内部服务延迟降低了34%&#xff0c;这主要归功于.NET社区贡献的改进。按照Sabharwal的说法&#xff0c;.NET Core的多项改进贡献了大部分的性能提升&#xff0c;包括字符串…

搭建基于云端的中间层以支持跨平台的智能视觉服务

不断演进的应用场景初级应用场景—宅在家里场景&#xff1a;Bob同学有一天在网上看到了一张建筑物的图片&#xff0c;大发感慨&#xff1a;"好漂亮啊&#xff01;这是哪里&#xff1f;我要去亲眼看看&#xff01;"Bob同学不想问别人&#xff0c;可笑的自尊心让他觉得…

高等数学超入门学习笔记

极限 百度百科 1.数列极限 百度百科 1.1 数列 1.2 数列极限 1.3 单调收敛原理 {xn}\{x_n\}{xn​}单调递增且{xn}\{x_n\}{xn​}有上界&#xff08;可以找到实数M使{xn}\{x_n\}{xn​}中任意一项小于M&#xff09;&#xff0c;{xn}\{x_n\}{xn​}收敛&#xff08;存在象限a&…

Microsoft宣布正式发布Linux on ASE

Microsoft宣布正式发布&#xff08;GA&#xff09;用于ASE&#xff08;应用服务环境&#xff0c;App Service Environment&#xff09;的Linux。该服务使客户可结合使用Linux上的应用服务&#xff08;App Service&#xff09;特性与ASE。在正式发布版之前&#xff0c;Microsoft…

Rinne Loves Xor

链接&#xff1a; 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 输入描述: 第一行一个整数 N&#xff0c;表示数组 A 和 B 的长度。 第二行 N …

Pipelines - .NET中的新IO API指引(一)

原文&#xff1a;https://blog.marcgravell.com/2018/07/pipe-dreams-part-1.html作者&#xff1a;marcgravell大约两年前&#xff0c;我发表了一篇关于.NET中即将到来的体验性新IO API的博文——在那时它被叫做"Channels"&#xff1b;在2018年的五月末&#xff0c;它…

[XSY] 分割(dfs树)

分割 题目相当于问 删掉两个点后 图是否仍然连通 割点问题&#xff0c;考虑用dfs树解决 设删去点u&#xff0c;v&#xff08;dfn[v]<dfn[u]&#xff09; 把 u, v 删去之后整棵树大概断成了几个部分&#xff1a; • v 上面到根的部分&#xff0c;以及上面挂着的那些东西&…