Codeforces Round #723 Oolimry and Suffix Array 题解 (Java/C++)
题解 令原字符串为c。 首先我们可以注意到一个性质:对于i<j,那么一定有$c_{s[i]}\leq c_{s[j]}$。比如对于$[3,2,4,1,0,5,6]$,至少有$c_3\leq c_2\leq c_4\leq c_1\leq c_0\leq c_5\leq c_6$.…
题解 令原字符串为c。 首先我们可以注意到一个性质:对于i<j,那么一定有$c_{s[i]}\leq c_{s[j]}$。比如对于$[3,2,4,1,0,5,6]$,至少有$c_3\leq c_2\leq c_4\leq c_1\leq c_0\leq c_5\leq c_6$.…
A. Mean Inequality 题解 将数组排序。然后将数组分成两半。每次从两半中各取一个数即可。 代码 Java C++…
题解 首先,如果没有任何限制,我们当然会喝光所有的药水。而事实上,唯一的限制是生命值不能小于0。 那么什么时候生命值会小于0呢?显然是喝的正数的药水的总和小于了喝的负数的药水的总和。…
题解 首先考量Anton是怎么还原才能做到最快。我们发现,Anton其实就是从左往右每次恢复一位。比如从NNOTA恢复到ANTON的第一步是恢复成ANNOT。于是我们想到,大方向就是把字母尽可能拉远,让他每一步都尽可能花费尽可能多的次数。…
A. Eshag Loves Big Arrays 题解 既然可以选择任意子序列。那么只要某个数x,高于了数组的最小值。那么迟早这个x会和某个最小值相邻,并且被删掉。所以统计高于最小值的值的数目就好。…
题解 首先第一个结论是:对于任意一个顶点,要么选择l,要么选择r。因为选择某个l和r之间的值的情况只有一种:就是样例2中的那种。但是其实对于样例2,仍然可以选择l和r中的一个。…
题解 令dp[i]表示n=i时的答案。我们以n=4为例说明解法。 首先考虑两种特殊情况,如下图所示:…
题意 给你一颗树。现在对于任意的k,问你有多少对u,v使MEX(u,v)=k。其中MEX是说,这两个点之间的最短路的所有点的下标中第一个没有出现的数。…