zoukankan      html  css  js  c++  java
  • kotlin learning

    on board: IntelliJ IDEA Community Edition 2020.1.1 x64

    beautify: ctrl+alt+L
    rename: shift+F6, press Enter
    skip to specific line: ctrl+G
    dulplicate current line: ctrl+D
    delete current line: ctrl+X

    codeforce round#646

    import java.util.*
    
    private fun readLn() = 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
    
    //val INF: Int = 1000000000
    
    fun main() {
    
        fun query(ixs: Iterable<Int>): Int {//参数为1..n
            var num = 0
            val joiner = StringJoiner(" ")//一个专门用来将里面元素输出成字符串的东西
            for (ix in ixs) {
                num++
                joiner.add(ix.toString())
            }
            println("? $num $joiner")
            return readLn().toInt()
        }
    
    
        val Case = readInt()
        repeat(Case) {
            val (n, k) = readInts()
            val subsets = Array(k) {
                val split = readLn().split(" ")//读入同一行多个整数,返回一个类似列表的东西
                //println(split)
                split.subList(1, split.size).map { it.toInt() }.toSet()//列表截取,将元素转化为整数
            }
            val maxx = query(1..n)
            var l = 1
            var r = n
            while (r > l) {
                val mid = (l + r) / 2
                if (query(l..mid) == maxx) {
                    r = mid
                } else {
                    l = mid + 1
                }
            }
            val answer = IntArray(k) {
                if (l in subsets[it]) query((1..n).toSet().minus(subsets[it])) else maxx//集合运算
            }
            println("! " + answer.joinToString (" "))
            readLn()
        }
    }
    
    private fun readLn() = 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
    
    //val INF: Int = 1000000000
    
    fun main() {
        val Case = 1
        repeat(Case) {
            val n = readInt()
            val cost = LongArray(n + 1)
            val init = IntArray(n + 1)
            val goal = IntArray(n + 1)
            val adj = Array(n + 1) { mutableListOf<Int>() }//保持读入顺序不变的set
            for (i in 1..n) {
                val (a, b, c) = readInts()
                init[i] = b
                goal[i] = c
                cost[i] = a.toLong()
            }
    
            for (i in 1..n - 1) {
                val (a, b) = readInts()
                adj[a].add(b)
                adj[b].add(a)
            }
    
            var answer = 0L
    
            fun dfs(now: Int, fa: Int): Long {
                var rem0 = 0L
                var rem1 = 0L
                if (init[now] != goal[now]) {
                    when (init[now]) {
                        0 -> rem0++
                        1 -> rem1++
                    }
                }
                for (to in adj[now]) if (to != fa) {
                    cost[to] = minOf(cost[to], cost[now])
                    val del = dfs(to, now)
                    if (del < 0) {
                        rem0 -= del
                    } else {
                        rem1 += del
                    }
                }
                answer += 2L * minOf(rem0, rem1) * cost[now]
                return rem1 - rem0
            }
    
            if (dfs(1, 0) == 0L) {
                println(answer)
            } else {
                println(-1)
            }
    
    
        }
    }
    

    kotlin heroes 4

    private fun readLn() = 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
    
    //val INF: Int = 1000000000
    
    fun main() {
        var t = readInt()
        for (testcase in 0 until t) {
            var (n, m) = readInts()
            var a = Array(m) {
                var (x, y,z) = readInts()
                struct(x-1,y-1,z)
            }
            var ans=Array(n){0}
    
            fun solve() {
                for (i in a.sortedByDescending{it.w}){
                    //println("${i.u},${i.v},${i.w}")
                    if (ans[i.u]==0) ans[i.u]=i.w
                    if (ans[i.v]==0) ans[i.v]=i.w
                    if (i.w!= minOf(ans[i.u],ans[i.v])){
                        println("NO")
                        return
                    }
                }
                println("YES")
                println(ans.joinToString(" "))
            }
            solve()
    
    
        }
    }
    
    
    class struct(val u: Int, val v: Int, val w: Int)
    
    

    codeforces round #644

    private fun readLn() = 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
    
    //val INF: Int = 1000000000
    
    fun main() {
        var t = readInt()
        repeat(t) {
            var (n,m) = readInts()
            var a=Array(n){
                var res=0L
                for (c in readLn()){
                    res=res*2+(c-'0')
                }
                res
            }
            a.sortByDescending { it }
            //a.forEach { println(it) }
            var l=0L
            var r=(1L shl m)-1
            val TrueRank=(l+r-n)/2
            var ans=TrueRank
            while (l<=r){
                var mid=(l+r)/2
                var value=mid
                for (x in a) if (x<mid) mid--
                if (mid>TrueRank){
                    r=value-1
                }
                else if (mid<TrueRank){
                    l=value+1
                }
                else{
                    var flag=true
                    for (x in a) if (x==value){
                        flag=false
                    }
                    if (flag){
                        ans=value
                        break
                    }
                    else{
                        l=value+1
                    }
                }
            }
    
            fun printX(L:Long,m:Int){
                if (m==0) return
                printX(L/2,m-1)
                print(L%2)
            }
    
            printX(ans,m)
            println()
        }
    }
    
    private fun readLn() = 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
    
    //val INF: Int = 1000000000
    
    fun main() {
        var t = readInt()
        repeat(t) {
            var (n,m,a,b) =
    
     readInts()
            if (n*a!=m*b){
                println("NO")
            }else{
                println("YES")
                var ans=Array(n){Array(m){0} }
                var pos=0
                for (i in 0 until n){
                    (0..a-1).map{it->(it+pos)%m}.forEach{ans[i][it]=1}
                    pos=(pos+a)%m
                }
    
                (0..(n-1)).forEach{ println(ans[it].joinToString ( "" )) }
            }
    
    
        }
    }
    
    private fun readLn() = 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
    
    //val INF: Int = 1000000000
    
    fun main() {
        var t = readInt()
        repeat(t) {
            var (n, m) = readInts()
            //var a=Array<String>(n,{ readLn() })
            var a = Array(n) { readLn() }
    
            fun solve(): String {
    
                fun check(test: String): Boolean {
                    for (i in 0 until n) {
                        var num = 0
                        for (j in 0 until m) {
                            if (a[i][j] != test[j]) num++
                        }
                        if (num > 1) return false
                    }
                    return true
                }
    
    
                for (i in 0 until m) {
                    for (j in 0 until 26) {
                        val c = ('a' + j).toChar()
                        var new = a[0].substring(0, i) + c + a[0].substring(i + 1, m)
                        if (check(new)) {
                            return new
                        }
                    }
                }
                return "-1"
            }
    
            println(solve())
    
        }
    }
    
    private fun readLn() = 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
    
    //val INF: Int = 1000000000
    
    /*
    
    fun main() {
        var t = readInt()
        repeat(t) {
            var n=readInt()
            var a=Array(n){readLn().map{it=='1'}.toBooleanArray()}
    
            fun check():Boolean{
                for (i in 0 until n-1){
                    for (j in 0 until n-1){
                        if (a[i][j]&&(!(a[i][j+1]||a[i+1][j]))) return false
                    }
                }
                return true
            }
    
            println(if (check()) "YES" else "NO")
    
        }
    }
    */
    
    fun main() {
        var t = readInt()
        repeat(t) {
            var n=readInt()
            var a=Array(n){readLn()}
    
            fun check():Boolean{
                for (i in 0 until n-1){
                    for (j in 0 until n-1){
                        if (a[i][j]=='1'&&(!(a[i][j+1]=='1'||a[i+1][j]=='1'))) return false
                    }
                }
                return true
            }
    
            if (check()){
                println("YES")
            }else{
                println("NO")
            }
    
        }
    }
    

    codeforces round #643

    import kotlin.math.min
    
    private fun readLn() = 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
    
    val INF: Int = 1000000000
    
    fun main() {
        val t = 1
        repeat(t) {
            var (N, A, R, M) = readInts()
            var T = min(A + R, M)
            var a = readInts()
    
            val f: (Int) -> Long = { H ->
                var add = 0L
                var rem = 0L
                a.forEach {
                    if (H > it) add += (H - it)
                    else rem += (it - H)
                }
                var tran = min(add, rem)
                T * tran + (add - tran) * A + (rem - tran) * R
    
    
            }
    
    
            var l = a.min()!!
            var r = a.max()!!
            var ans: Long = 1L * INF * INF
            while (l <= r) {
                var mid = (l + r) / 2
                var left = f(mid)
                var right = f(mid + 1)
                ans = min(ans, left)
                ans = min(ans, right)
                if (right - left > 0) {
                    r = mid - 1
                } else {
                    l = mid + 1
                }
            }
            println(ans)
    
        }
    }
    
    
    import java.lang.StringBuilder
    
    private fun readLn() = 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
    
    //val INF: Int = 1000000000
    
    fun main() {
        val t=1
        repeat(t) {
            var (n,s) = readInts()
            val ans = StringBuilder()
            repeat(n-1){ ans.append("1 ")}
            var final = s-(n-1)
            ans.append(final.toString())
            if (final-1>(n-1)){
                println("YES")
                println(ans)
                println(final-1)
            }else{
                println("NO")
            }
    
    
        }
    }
    
    import kotlin.math.max
    import kotlin.math.min
    
    private fun readLn() = 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
    
    val INF: Long = 1000000000
    
    fun main() {
        var t = readInt()
        repeat(t) {
            var (a,k) = readLongs()
            for (i in 2..k){
                var tmp=a.toString().map{it.toString().toInt()}
                var mul=(tmp.min()?:0)*(tmp.max()!!)
                if (mul==0) break
                a+=mul
            }
            println(a)
        }
    }
    

    Kotlin Heroes: Episode 2

    A

    withindex, tosortedset, take, jointostring

    private fun readLn() = 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
    
    
    fun main() {
        val t = 1
        repeat(t) {
            var n = readLine()!!.toInt()
            val a = readInts().withIndex().toSortedSet(compareBy { it.value })
            if (a.size < 3) {
                println("-1 -1 -1")
    
            } else {
                println(a.take(3).joinToString(" ") { (it.index + 1).toString() })
            }
    
        }
    }
    

    Kotlin Heroes: Episode 3

    B

    // list, ?=, flatMap, firstornull
    
    private fun readLn() = 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
    
    
    //        var n = readLine()!!.toInt()
    //        var a = readLine()!!.split(" ").map({it.toInt()}).toMutableList()
    
    val INF: Int = 1000000000
    
    fun main() {
        var t = readInt()
        repeat(t) {
            var n = readLine()!!.toInt()
            val segments = List(n) { readInts() }
            val toTry = segments.flatMap { listOf(it[0] - 1, it[0], it[1], it[1] + 1) }
            println(toTry.firstOrNull { x ->
                segments.count { it[0] <= x && x <= it[1] } == 1
            } ?: -1)
    
        }
    }
    

    C

    // sort,very standard

    private fun readLn() = 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
    
    var INF = 1_000_000_000 + 10
    
    
    fun main() {
        var t = readInt()
        while (t-- > 0) {
            var n = readInt()
            var a = readInts()
            a.sorted()
            var sum = 0
            var minn = Pair(INF, 0)
            for (i in a.indices) {
                if (a[i] > 0) {
                    sum += a[i]
                    if (a[i] < minn.first)
                        minn = Pair(a[i], i)
                }
                if (a[i] < 0 && -a[i] < minn.first)
                    minn = Pair(-a[i], i)
            }
            println(sum - minn.first)
            var ans = mutableListOf<Int>()
            for (i in a.indices) {
                if ((a[i] > 0 && i != minn.second) || (a[i] < 0 && i == minn.second))
                    ans.add(1)
                else
                    ans.add(0)
            }
            println(ans.joinToString(""))
        }
    }
    

    A

    //class
    
    private fun readLn() = 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
    
    
    fun main() {
        var t = readInt()
        repeat(t) {
            var n = readInt()
            println(n.round().convert())
        }
    }
    
    fun Int.convert(): String {
        return when {
            this >= 1000000 -> {
                "${this / 1000000}M"
            }
            this >= 1000 -> {
                "${this / 1000}K"
            }
            else -> {
                "$this"
            }
        }
    }
    
    fun Int.round(): Int {
        return when {
            this >= 1000000 -> {
                (this + 500000) / 1000000 * 1000000
            }
            this >= 1000 -> {
                (this + 500) / 1000 * 1000
            }
            else -> {
                this
            }
        }
    }
    
    //import
    
    import kotlin.math.roundToInt
    
    
    private fun readLn() = 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
    
    
    fun main() {
        var t = readInt()
        repeat(t) {
            var n = readInt()
            solve(n)
        }
    }
    
    fun solve(n: Int) {
        if (n >= 999500) {
            println((n / 1000000.0).roundToInt().toString() + "M")
    
        } else if (n >= 1000) {
            println((n / 1000.0).roundToInt().toString() + "K")
        } else println(n)
    }
    
  • 相关阅读:
    VUE动态组件component以及<keep-alive>
    git flow工作流
    vue组件通讯
    webpack加载器和自动打包工具
    webpack的插件使用,以及引入vue文件的注意事项
    webpack起步以及手动配置config文件
    git 基本操作
    C++中静态成员变量的可以在类内初始化吗?
    python 环境变量设置PYTHONPATH
    vector中resize和reserve的区别
  • 原文地址:https://www.cnblogs.com/reshuffle/p/12918224.html
Copyright © 2011-2022 走看看