[线性规划] [性质] 模拟赛好题分享

在这里插入图片描述
从题目中给出的 “相似” 定义,我们发现实际上要求的是 A , B A,B A,B 的数目相同,而不管排列顺序

对于操作,发现 “相邻” 这个字眼貌似是要考虑顺序,但细想:一个字符串中只要有 A A A B B B,就必然至少有一个位置的 A , B A,B A,B 是相邻的

那么现在就确定只与数量有关了。暴力枚举可以拿到 35 pts

现在每个串相当于转化成了一个二元组 ( A , B ) (A,B) (A,B),类比我们在处理区间问题时有时会将二维信息 [ l , r ] [l,r] [l,r] 看做平面中的点 的技巧,这里我们也这么做

观察到 最大的最小,考虑二分 k k k 表示某个串 T T T 修改 k k k 次,希望可以成为每一个 S S S

把四个操作翻译一下,实际上是:假设当前在 ( x , y ) (x,y) (x,y),在坐标系中可以走到 ( x + 1 , y + 1 ) , ( x − 1 , y − 1 ) , ( x + 1 , y ) , ( x − 1 , y ) , ( x , y + 1 ) , ( x , y − 1 ) (x+1,y+1),(x-1,y-1),(x+1,y),(x-1,y),(x,y+1),(x,y-1) (x+1,y+1),(x1,y1),(x+1,y),(x1,y),(x,y+1),(x,y1)

考虑 k k k 次以内,怎样的点 ( T T T 串) 可以到达 s s s

在这里插入图片描述
是一个这样的图形,那么我们的目的是找一个 能够到达所有 s s s 的串 T T T,即 所有图形的交

横平竖直的图形,用线性规划解决,对于一个串 ( x i , y i ) (x_i,y_i) (xi,yi),可以列出以下式子: x i − k ≤ x ≤ x i + k x_i-k\leq x\leq x_i+k xikxxi+k y i − k ≤ y ≤ y i + k y_i-k\leq y\leq y_i+k yikyyi+k y i − x i − k ≤ y − x ≤ y i − x i + k y_i-x_i-k\leq y-x\leq y_i-x_i+k yixikyxyixi+k

对所有的 n n n 组不等式取交,分别得到 x , y , y − x x,y,y-x x,y,yx 的范围

若三个解集有一个为空,则无解

否则,设 l x ≤ x ≤ r x , l y ≤ y ≤ r y , l d ≤ y − x ≤ r d lx\leq x\leq rx,ly\leq y\leq ry,ld\leq y-x\leq rd lxxrxlyyryldyxrd,那么由前两个式子作差得到 l y − r x ≤ y − x ≤ r y − l x ly-rx\leq y-x \leq ry-lx lyrxyxrylx

在这里插入图片描述
注意这样直接作差实际上会使 y − x y-x yx 范围扩大,如上图求出的实际上是 黑色斜线之间的区域

但是,由于斜率相同,若蓝色区域与黑色区域有交,显然也必定与矩形区域有交

所以直接求二者的交集,看是否为空来判断即可

有一个小细节是 l x , l y lx,ly lx,ly 的初值应该为 0 0 0,不能有负数;还需要 r x , r y rx,ry rx,ry 不同时为零

下面考虑如何构造答案

尽可能的把答案取到右上边界的位置,发现要么有 x = r x x=rx x=rx ,要么有 y = r y y=ry y=ry

在这里插入图片描述
那么只需令 A = m i n ( r x , r y − l d ) , B = m i n ( r y , r x + r d ) A=min(rx,ry-ld),B=min(ry,rx+rd) A=min(rx,ryld),B=min(ry,rx+rd) 即可,易证这样能够使得 A , B A,B A,B 不同时为 0 0 0

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值