题解:CF2011C Split the Expression

我们先将所有的数字块拆开,然后对于非首尾的字符串依次遍历它们的每个位置,取在每个位置拆开的值的最大值即可。

代码:

fun main() {
    val tc = readln().toInt()
    for (tt in 0 until tc) {
        val s = readln()
        val a = s.split("+")
        val sz = a.size
        var sum = a[0].toLong() + a[sz - 1].toLong()
        for (i in 1..sz - 2) {
            val t = a[i]
            var mx = 0L
            for (j in 1..t.length - 1) {
                mx = maxOf(mx, t.substring(0, j).toLong() + t.substring(j).toLong())
            }
            sum += mx
        }
        println(sum)
    }
}

posted @ 2024-10-04 21:26  cly312  阅读(20)  评论(0)    收藏  举报