Source && Official_Sols 戳我
A
官方的做法是处理每个极长单调串,求前缀和,然后每次询问做二分。
也可以用线段树啦。记下从端点开始的串长度,区间合并即可。
还有用莫队算法过的。
B
移步题解
C
dp[i][j][k]
表示前i
个数,选的最小数是j
,然后LIS长度为2的串第二个最小为k
的方案数。首先不选a[i]
,直接从i-1
转移过来。考虑选a[i]
,如果比j
小,就可以更新j
为a[i]
,比k
小,更新k
,比k
大,那就不行了,接上就不合法了。
D
测试智商的题。。
具体题目细节不太记得了,反正是底下这个意思。
首先如果没有关系,就是按Xi - Yi
排序,然后挨个取。
考虑关系。AB被LL取为a,LW取为b,WL为c,WW为d。由于有一个条件a+d=c+b
。对于A和B,我们固定B为某个人取走了,然后观察L对于A的决策。
B被W取,则WW到LW,分数变化为b-d
;
B被L取,则WL到LL,分数变化为a-c
。 不是等宽字体?。。
由于上面的等式,不管B是谁取,分数变化相同。也就是说L取不取A,和B无关。。L取B时也一样。对于W也是一样,也就是说A和B无关。。
所以只要能找到一种转换,把关系得分拆给A和B的得分上就好了。。这个列一个方程组就可以了。。
E
不会=。= 移步题解
F
知道怎么做了但是不会写哎。主席树+字典树 || 可持久化字典树?移步题解。。
G
观察代价式子,最好是只加一条边的值。。所以如果需要的话我们就把最短的边加得足够大就好了。。
H
最后胜利的肯定是能力值最大的呀。。
I
迭代好像很厉害的样子。。
可以列方程高斯消元。。也可以直接让A给B的等于B给A的。。