前言
除了5193,我都没有打。。
口胡题解嘛。。
就是口胡
5191: [Usaco2018 Feb]Slingshot
这个的话,因为只能用一次
其实我们只有四种情况
下文L,R表示出发点,Li,RiLi,Ri表示弹弓,—->表示在数轴上面的先后顺序
第一种情况:
L????>Li????>Ri????>RL????>Li????>Ri????>R
这个要满足的条件是R>=RiL<=LiR>=RiL<=Li
式子就是(R?Ri)+(Li?L)+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
式子就是(R?Ri)+(L?Li)+Ci(R?Ri)+(L?Li)+Ci
显然可以按L从小到大排序,维护线段树维护某一段区间里面?Ri?Li+Ci?Ri?Li+Ci的最小值即可
剩下两个不写了,也是一样的套路,都是先用排序解决一个条件,线段树解决另外一个加上维护
时间复杂度O(nlogn)O(nlogn)
5192: [Usaco2018 Feb]New Barns
这题显然最后是一棵树啊
由于是离线
我们可以吧树先建出来
考虑树剖
考虑距离dep[x]+dep[y]?2?dep[LCA]dep[x]+dep[y]?2?dep[LCA]
第一个对于询问是常量,我们要找的是dep[y]?2?dep[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就可以乱搞了