发现集训题比模拟题画风正常了许多……终于不那么鬼畜了……今天的题目还是可以切的
orz本校神犇%%%zfr AK辣
集训题
JZOJ 5421
话说这似乎是HDU原题 原题大赛?(雾)
题意:约瑟夫问题,快速回答多组(
T≤20
)数据,人数
n≤109
,跳的步数
k≤105
分析:先考虑一种
O(n)
的做法。我们考虑对于同一个
k
,设
时间复杂度 O(klogn) 。
JZOJ 5422
题意:给
n
个向量,每次改一个或者查询区间内向量两两叉积的长度再平方的和
分析:看到这种题目,第一眼就觉得非常有对称性,那么肯定是推式子了
考虑
有序性有点烦,我们直接算然后去掉相同的和对称的重复,同时暴力展开(其实前后两个重复的部分已经抵消了):
看一眼,这东西不是随便维护吗?开三个树状数组就A掉了……不过要注意模的时候怎么搞,这需要非常注意(这搞了我好久啊QAQ)
其实这里考虑两个序列所有两两乘积和的方法也基本上是一个推导的时候很有用的套路
JZOJ 5424
题意:求最长公共上升子序列
分析:显然是DP,还是挺好推的,不过要用到一点DP对状态限制的小技巧
我们考虑设
f(i,j)
表示
a
和
另外,话说这里这个东西甚至是可以数据结构维护的,并不需要扫的时候这样做,那么也许存在更低复杂度的方法?因为实际上相同的字符并不会很多,所以状态数也相应可以降下来?
日常乱切
Tsinsen D2442
题意:给一个排列,问是否存在一个长度不小于
3
的等差数列
分析:考虑枚举每一个数,看看它能否作为比例中项。这里开一个桶,边扫边加,如果对于当前数
然后就是问这样桶里面是不是整个回文的就好了(其实就是向左向右对称的极长),可以用树状数组快速维护Hash值,甚至可以用bitset……
Tsingsen D2443
题意:在仙人掌上询问最短路
分析:先跑下Tarjan找环,然后考虑拆环然后将环里面的点连向深度最小的点,构成一棵棵子树,令这些新加的边等于环上最短距离
如果询问的两点在同一个环里面,那么就比较一下正着走和反着走
如果不在同一个环里面那么可以直接在树上跑
其实我想说这不就是JZOJ 5287吗怎么作业题给我们出成noip模拟了现在仙人掌烂大街了吗……