Codeforces Round #171 (Div. 2)

A. Point on Spiral

傻逼题

B. Books

Two-Pointer

C. Ladder

做法就是标号,详见代码:

for (int i = 2; i <= n; i++) {
    if (a[i] <= a[i - 1])
        l[i] = l[i - 1];
    else
        l[i] = i;
}
for (int i = n - 1; i > 0; i--) {
    if (a[i] <= a[i + 1])
        r[i] = r[i + 1];
    else
        r[i] = i;
}

然后判断r[left]是否大于l[right]就行了。

D. The Minimum Number of Variables

迷之数位dp?

E. Beautiful Decomposition

我们可以通过2次操作对某一段0改造成连续的一串1,例如:000000->100000->011110,因此我们只需要统计有多少段连续的1即可,然后就乱搞就行了,注意一下边界情况什么的。

原文地址:https://www.cnblogs.com/phonism/p/3102011.html