今天人品超好,出了4题,哈哈,把div1的选手算进排名200,这次D题给力了一下,C题的线段树写得卡了比较久的时间,需要加强线段树。
B .
注意每个字符的位置可以随意放,所以我们只要统计每个字母的个数,设字母为奇数个的有cnt个,如果cnt == 0 那么一定是First,如果cnt 大于零,那么每次他们都会拿这些奇数个的字母,谁在拿之前cnt == 1那么就是谁赢。
C.
用树状数组或线段树统计一下每个位置要加的次数,然后让次数多的跟值大的相乘可以使答案最大。
D.
把l,r都化成二进制数,然后从最高位开始向后考虑, 如果两位值相等,该位必为0, 如果两位值不相同(第一次出现不同),即l位为0,r位为1,此时该位取1最优,此后的几位遍都是1,(可以把所有情况都考虑一下,很容易得出结论)。
E.
我们可以用两颗线段树分别维护深度 Dep和先序遍历的序号Order。并且我们把根节点单独考虑。
当v为根节点时,更新Dep。
否则 更新Dep,再看情况更新Order。