美文网首页
Codeforces 1353B - Two Arrays An

Codeforces 1353B - Two Arrays An

作者: 费城的二鹏 | 来源:发表于2020-05-22 08:28 被阅读0次

    朋友家的猫咪,特别可爱。

    翻译

    跟你两个数组 a 和 b,都包含 n 个数字,给你一个整数 k。

    每一次移动,你可以交换 a 和 b 数组内任意一个数组。你的任务是在不超过 k 次移动的情况下,使 a 的和最大。

    输入格式

    第一行输入数字 t,表示 t 组测试用例。

    每个测试用例,第一行输入 n k,用空格分隔。

    第二行和第三行分别输入 a 和 b,用空格分隔。

    输出格式

    每个测试用例输出最大和。

    分析

    可以排序列表,然后将 b 中最大值与 a 中最小值比较,如果 a 中的值小,就交换数值,然后判断步数 k 是否到达,如果没到达就重新排序重复以上步骤。

    代码(kotlin)

    // https://codeforces.com/contest/1353/problem/B
    
    import java.io.*
    
    private var br: BufferedReader? = null
    
    private fun br(): BufferedReader? {
        if (br == null) {
            var isLocal = false
            val file = File("./file/input.txt")
    
            try {
                isLocal = file.exists()
            } catch (e: Exception) {
    
            }
    
            br = if (isLocal) {
                BufferedReader(BufferedReader(FileReader(file)));
            } else {
                BufferedReader(InputStreamReader(System.`in`))
            }
        }
        return br
    }
    
    private fun readLn() = br()?.readLine()!! // string line
    private fun readInt() = readLn().toInt() // single int
    private fun readLong() = readLn().toLong() // single long
    private fun readDouble() = readLn().toDouble() // single double
    private fun readStrings() = readLn().split(" ") // list of strings
    private fun readInts() = readStrings().map { it.toInt() } // list of ints
    private fun readLongs() = readStrings().map { it.toLong() } // list of longs
    private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
    private fun readArray() = readStrings().map { it.toInt() }.toIntArray() // list of ints
    
    fun case() {
        var (n, k) = readInts()
        var a = readInts().toMutableList()
        var b = readInts().toMutableList()
    
        a = a.sorted().toMutableList()
        b = b.sortedDescending().toMutableList()
    
        while (k-- > 0) {
            if (b[0] > a[0]) {
                a[0] = b[0].also { b[0] = a[0] }
                a = a.sorted().toMutableList()
                b = b.sortedDescending().toMutableList()
            } else {
                break
            }
        }
    
        println(a.sum())
    }
    
    fun main() {
        var t = readInt()
        while (t-- > 0) {
            case()
        }
    }
    

    更多代码尽在 https://github.com/Tconan99/Codeforces

    by 费城的二鹏 2020.05.19 长春

    相关文章

      网友评论

          本文标题:Codeforces 1353B - Two Arrays An

          本文链接:https://www.haomeiwen.com/subject/unwbohtx.html