tg 61
T1
排序,按\(a_i+b_i\)排序
设\(c_i=\frac{a_i+b_i}{2}\)
然后我们会发现有这个东西
\(w_{i,j}=|c_i-c_j|+\frac{a_i-b_i}{2}+\frac{a_j-b_j}{2}\)
然后我们会发现\(\frac{a_i-b_i}{2}+\frac{a_j-b_j}{2}\)这是个常量
于是我们就只需要考虑\(|c_i-c_j|\)最大值
显然排序从两端匹配是最优方案
T2
首先任何情况下都能\(3\)步构造对吧
前面板刷成\(A\)中间\(B\)最后\(C\)长度各为\(n\)就可以对吧
然后考虑构造方案是\(2\)的
先忽略出现次数最少的那一个
首先找到第一个出现\(n\)的字符
这以后直接板刷成另一个字符
最后在把板刷位置之前的忽略字符加上
算出板刷忽略字符区间长,从这个位置开始板刷到最后就好了
到这个位置事实上有\(60pts,\)同时,我们给出了在任意情况下次数为\(2\)的构造
继续考虑构造次数\(0\space or\space 1\)的
首先就是\(0\)很好判,三个出现次数相同就结束了
考虑判\(1\)
还是忽略出现次数最少的
然后就找一个区间,满足抠掉这区间所有字符后两个字符数量都是\(n\)
转换成前缀出现次数差,如果出现次数差和整个串的出现次数减掉\(n\)一样就是合法的
两个都合法就直接输出
维护可以双指针搞掉,因为前缀和单调不降
时间复杂度\(O(n)\)
T3
首先就是如果\((x,y)\)可以成为最优决策
那么会有\(\forall i\in(x,y),a_i<min(a_x,a_y),x<y\)
证明:
如果\(\exist i\in(x,y),a_i\geq min(a_x,a_y),x<y\)
那么我把\(x\)换成\(i\)一定不劣
因为如果大的话我直接换了肯定优,
如果等于,我拿\(i\)换掉\(x\)那我可以用到的\(c\)位置是比不换更多的
于是我这个时候从决策包容性我换了也是优的
所以我们只需要考虑上述点对即可
有多少呢?\(O(n)\)
事实上证明就是相当于跑一遍单调栈
每个点只会出队入队各一次
于是点对数是线性级别
预处理出上述点对,考虑快速修改
首先我们不可能直接做,考虑通过继承之前信息做
离线扫描线,将询问按照左端点单调不降排序
在询问左端点左移过程中,不断加入每个点对\((x,y)\)的\(B=a_x+a_y\)
然后查询\(B_i+a_i\)的最大值就行了
注意修改区间\([2\cdot y-x,n]\)这一段区间对于\(B\)取最大值,
查询最大值查\([l+2,r]\)的\(a+B\)最大值
T4
题解错了。。。