bzoj 5191~5193 口胡题解

本文解析了USACO2018Feb的三道题目:Slingshot、NewBarns和CowGymnasts。Slingshot通过四种情况的讨论和线段树维护最小值的方法来解决;NewBarns利用树剖和轻儿子最大值维护技巧进行查询和修改;CowGymnasts则通过循环特性找到最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

除了5193,我都没有打。。
口胡题解嘛。。
就是口胡

5191: [Usaco2018 Feb]Slingshot

这个的话,因为只能用一次
其实我们只有四种情况
下文L,R表示出发点,Li,RiLi,Ri表示弹弓,—->表示在数轴上面的先后顺序
第一种情况:
L>Li>Ri>RL−−−−>Li−−−−>Ri−−−−>R
这个要满足的条件是R>=RiL<=LiR>=RiL<=Li
式子就是(RRi)+(LiL)+Ci(R−Ri)+(Li−L)+Ci
显然可以按L从大到小排序,维护线段树维护某一段区间里面Ri+Li+Ci−Ri+Li+Ci的最小值即可

第二种情况
Li>L>Ri>RLi−−−−>L−−−−>Ri−−−−>R
这个要满足的条件是R>=RiL>=LiR>=RiL>=Li
式子就是(RRi)+(LLi)+Ci(R−Ri)+(L−Li)+Ci
显然可以按L从小到大排序,维护线段树维护某一段区间里面RiLi+Ci−Ri−Li+Ci的最小值即可

剩下两个不写了,也是一样的套路,都是先用排序解决一个条件,线段树解决另外一个加上维护

时间复杂度O(nlogn)O(nlogn)

5192: [Usaco2018 Feb]New Barns

这题显然最后是一棵树啊
由于是离线
我们可以吧树先建出来
考虑树剖
考虑距离dep[x]+dep[y]2dep[LCA]dep[x]+dep[y]−2∗dep[LCA]
第一个对于询问是常量,我们要找的是dep[y]2dep[LCA]dep[y]−2∗dep[LCA]的最大值
树剖每个节点维护轻儿子里面这个东西的最大值就可以了
每跳过一条轻链就暴力查询一下
每一次修改也是跳轻链暴力修改一下就可以了

时间复杂度O(nlog2n)O(nlog2n)

5193: [Usaco2018 Feb]Cow Gymnasts

这题做了一个晚上。。
感觉药丸。。
我们要证明一个结论,就是填的数极差不会超过1
嘎打表找规律,先%
这个的话,胡乱证一下(雾)
突破口就是循环啊
考虑,最大值是m
那么可以得到,g=gcd(m,n)g=gcd(m,n)
可以得到这个循环是以g为循环节的
然后枚举g就可以乱搞了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值