【杭电多校2020】Go Running【几何】【最小点覆盖】

题意:有一个数轴,若干人在某个时刻开始从某个点朝某个方向按111的速度走若干时间。已知nnn个条件,形如tit_iti时刻xix_ixi的位置有人,求最少可能的人数。

∑n≤5×105\sum n\leq 5\times 10^5n5×105

画出 x−tx-txt二维平面,可以看成用最少k=±1k=\pm1k=±1的直线覆盖给出的nnn个点

45°45\degree45°看成水平线或竖直线(但好像没啥区别)

过每个点作水平线和竖直线,将直线去重,然后直线建成点,点建成过它作的两个直线之间连的边,跑最小点覆盖即可。

注意匈牙利是O(nm)O(nm)O(nm),dinic只有O(mn)O(m\sqrt n)O(mn)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
#define MAXN 200005
#define MAXM 400005
#define INF 0x3f3f3f3f
using namespace std;
struct edge{int u,v,c;}e[MAXM];
int head[MAXN],nxt[MAXM],cnt;
void ins(int u,int v,int c)
{e[++cnt]=(edge){u,v,c};nxt[cnt]=head[u];head[u]=cnt;
}
void addnode(int u,int v,int c){ins(u,v,c);ins(v,u,0);}
int s,t;
int dis[MAXN];
bool bfs()
{queue<int> q;q.push(s);memset(dis,-1,sizeof(dis));dis[s]=0;while (!q.empty()){int u=q.front();q.pop();for (int i=head[u];i;i=nxt[i])if (e[i].c&&dis[e[i].v]==-1){dis[e[i].v]=dis[u]+1;q.push(e[i].v);if (e[i].v==t)return true;}}return false;
}
int dfs(int u,int f)
{if (u==t||!f)return f;int used=0;for (int i=head[u];i;i=nxt[i])if (e[i].c&&dis[e[i].v]==dis[u]+1){int w=dfs(e[i].v,min(e[i].c,f));if (!w)continue;used+=w;e[i].c-=w;e[i^1].c+=w;f-=w;if (used==0)break;}if (!used) dis[u]=-1;return used;
}
int dinic()
{int mflow=0;while (bfs())mflow+=dfs(s,INF);return mflow;
}
int x[MAXN],y[MAXN],xl[MAXN],yl[MAXN],xcnt,ycnt;
int main()
{int T;scanf("%d",&T);while (T--){int n;scanf("%d",&n);for (int i=1;i<=xcnt+ycnt+2;i++) head[i]=0;for (int i=1;i<=cnt;i++) nxt[i]=0;cnt=1,xcnt=ycnt=0;for (int i=1;i<=n;i++){int a,b;scanf("%d%d",&a,&b);x[i]=xl[i]=a+b;y[i]=yl[i]=a-b;}sort(xl+1,xl+n+1);xcnt=unique(xl+1,xl+n+1)-xl-1;sort(yl+1,yl+n+1);ycnt=unique(yl+1,yl+n+1)-yl-1;s=xcnt+ycnt+1,t=s+1;for (int i=1;i<=xcnt;i++) addnode(s,i,1);for (int i=xcnt+1;i<=xcnt+ycnt;i++) addnode(i,t,1);for (int i=1;i<=n;i++){x[i]=lower_bound(xl+1,xl+xcnt+1,x[i])-xl;y[i]=lower_bound(yl+1,yl+ycnt+1,y[i])-yl;addnode(x[i],y[i]+xcnt,1);}printf("%d\n",dinic());}return 0;
}

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

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

相关文章

Codeforces Round #636 (Div. 3) F. Restore the Permutation by Sorted Segments 思维 + 暴力

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; n≤200n\le200n≤200 思路&#xff1a; 首先关注到rrr从[2,n][2,n][2,n]都出现一次&#xff0c;所以很明显最后一个位置只出现一次&#xff0c;但是这样倒着来不是很好做考虑正着来。 我们可以枚举111位置填…

.NET中生成动态验证码

NET中生成动态验证码验证码是图片上写上几个字&#xff0c;然后对这几个字做特殊处理&#xff0c;如扭曲、旋转、修改文字位置&#xff0c;然后加入一些线条&#xff0c;或加入一些特殊效果&#xff0c;使这些在人类能正常识别的同时&#xff0c;机器却很难识别出来&#xff0c…

【NOI2019】弹跳【二维线段树】【dijkstra】

题意&#xff1a;一个whw\times hwh的二维平面上有nnn个城市&#xff0c;有mmm个弹跳装置&#xff0c;第iii个可以花费tit_iti​的时间从城市pip_ipi​跳到矩形x∈[l,r],y∈[u,d]x\in [l,r],y\in[u,d]x∈[l,r],y∈[u,d]中的任意一个城市。求从111到其他每个城市的最小时间。 w,…

Codeforces Beta Round #51 D. Beautiful numbers 数位dp + 状态优化

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 数位dpdpdp挺经典的一个题辣&#xff0c;有一个很明显的状态就是f[pos][num][lcm]f[pos][num][lcm]f[pos][num][lcm]表示到了第pospospos位&#xff0c;数是numnumnum&#xff0c;个位数最…

在C#中使用Irony实现SQL语句的解析

在上一篇博文 LogoSharp&#xff1a;Logo语言的C#实现中&#xff0c;我介绍了LOGO语言的C#实现&#xff0c;在该项目中&#xff0c;我使用了.NET下的语法解析框架&#xff1a;Irony。Irony框架最开始的时候是由Roman Ivantsov发布在codeplex上的一个开源项目&#xff0c;它使用…

【CF1045A】A Last chance【贪心】【线段树优化建图】【网络流构造方案】

题意&#xff1a;有nnn个武器和mmm个飞船&#xff0c;武器有下面三种 从给定的集合SSS中击破一个。在给定的区间[L,R][L,R][L,R]中击破一个。对于给定的a,b,ca,b,ca,b,c&#xff0c;选择000个或222个击破。特殊地&#xff0c;每个飞船最多被该操作的a,b,ca,b,ca,b,c指定一次。…

P4127 [AHOI2009]同类分布 数位dp + 对状态剪枝

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 比较套路的题&#xff0c;首先也有个明显的状态f[pos][num][sum]f[pos][num][sum]f[pos][num][sum]表示到了pospospos位&#xff0c;当前数为numnumnum&#xff0c;各位数字之和为sumsumsu…

.NET开发框架(六)-架构设计之IIS负载均衡(视频)

前面有关注我们公众号文章的朋友应该都知道&#xff0c;我们的分布式应用服务可以通过Ocelot网关进行负载均衡&#xff0c;这种方式属于应用级别的实现。而今天我们给大家介绍的是平台级别的实现&#xff0c;并且我们首次使用视频方式进行讲解。本文通过视频方式为大家演示&…

【NOI2019】斗主地【期望】【组合数学】【下降幂】【插值】

题意&#xff1a; 有nnn张牌&#xff0c;从上往下的第iii张牌权值是f(i)itypef(i)i^{type}f(i)itype。 进行mmm次洗牌操作&#xff0c;每次操作给定aia_iai​&#xff0c;将从上往下的前aia_iai​张牌分成一堆&#xff0c;后面bib_ibi​张牌分成第二堆。如果两堆的牌数分别为…

架构杂谈《二》

服务化到微服务1、微服务的产生随着互联网企业的不断发展&#xff0c;海量用户发起的大规模、高并发请求是企业不得不面对的&#xff0c;上一篇 架构杂谈《一》杂谈的SOA服务化系统能够分解任务&#xff0c;让每个服务更简单、职责单一、更易于扩展。但无论是Web Service 还是E…

Good Bye 2017 G. New Year and Original Order 数位dp + 按数贡献

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 定义S(k)S(k)S(k)为将kkk的每一位拿出来从小到大排序后构成的数&#xff0c;比如S(3421)1234S(3421)1234S(3421)1234&#xff0c;求S(k)1≤k≤nS(k)_{1\le k\le n }S(k)1≤k≤n​。 1≤n≤107001\le n\le 10…

【NOI2019】 机器人 【区间dp】【插值】【下降幂多项式】【分段函数】

题意&#xff1a;有个长度为nnn的序列aaa&#xff0c;ai∈[Li,Ri]a_i\in [L_i,R_i]ai​∈[Li​,Ri​]。从一个位置sss可以往左直到≥as\geq a_s≥as​,往右直到>as> a_s>as​。求有多少种可能的序列满足从任意位置向左或向右的最大步数的差的绝对值不超过222。 n≤300…

上海理工大学第二届“联想杯”全国程序设计邀请赛 Identical Day 思维 + 暴力

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一个010101序列&#xff0c;假设有一段长为lll连续的全111子串&#xff0c;定义这段字串不高兴值为l∗(l1)2\frac{l*(l1)}{2}2l∗(l1)​&#xff0c;整个串的所有不高兴值相加为总的不高兴值。现在你可以…

简化 Pod 故障诊断:kubectl-debug 介绍

背景容器技术的一个最佳实践是构建尽可能精简的容器镜像。但这一实践却会给排查问题带来麻烦&#xff1a;精简后的容器中普遍缺失常用的排障工具&#xff0c;部分容器里甚至没有 shell (比如 FROM scratch &#xff09;。在这种状况下&#xff0c;我们只能通过日志或者到宿主机…

dotnet 新项目格式与对应框架预定义的宏

在 sdk style 的项目格式支持使用多框架开发&#xff0c;此时需要在代码里面通过宏判断&#xff0c;在编译的时候执行不同的代码。本文告诉大家在框架里面对应的预定义的条件编译符有哪些在让一个 csproj 项目指定多个开发框架 - walterlv告诉大家如何在 sdk style 项目格式如何…

【UOJ549】序列妙妙值【异或】【根号分治】

题意&#xff1a;给一个长度为nnn的序列aaa&#xff0c;将其分成kkk段&#xff0c;不能为空&#xff0c;求所有段的异或和之和的最小值。 n≤6104,ai<216,k≤8n\leq 6\times 10^4,a_i <2^{16},k\leq 8n≤6104,ai​<216,k≤8 先求个前缀异或和&#xff0c;显然有个 dp…

Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest 思维 + 差分

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你三个长度分别为k1,k2,k3k1,k2,k3k1,k2,k3的数组a,b,ca,b,ca,b,c&#xff0c;其中k1k2k3nk1k2k3nk1k2k3n&#xff0c;这三个数组中的元素拼接起来是一个nnn的排列&#xff0c;每次可以将某个数组中的某个…

TPL Dataflow .Net 数据流组件,了解一下?

作为单体程序&#xff0c;依赖的第三方服务虽不多&#xff0c;但是2C的程序还是有不少内容可讲&#xff1b;作为一个常规互联网系统&#xff0c;无外乎就是接受请求、处理请求&#xff0c;输出响应。由于业务渐渐增长&#xff0c;数据处理的过程会越来越复杂和冗长&#xff0c;…

【CF1394B】Boboniu Walks on Graph【图论】【集合哈希】

题意&#xff1a;给定nnn个点mmm张图的有向图&#xff0c;有1∼m1\sim m1∼m互不相同每个点出度不超过kkk。对于一个 kkk元组cic_ici​&#xff0c;图中的每个点uuu只保留第cdeguc_{deg_u}cdegu​​小的边。求有多少种ccc使得在保留下来的图中每个点沿着出边一直往下走可以走回…

Educational Codeforces Round 76 (Rated for Div. 2) F. Make Them Similar 折半搜索

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 一个显然的思路就是2302^{30}230枚举所有的xxx&#xff0c;让后再检查&#xff0c;这个复杂度显然不能接受。 又发现对于每个位置它取多少不受其他位置限制&#xff0c;满足可拼接性&#…