zoukankan      html  css  js  c++  java
  • [置顶] Codeforces Round #190 (Div. 2)(完全)

    好久没有写博客了,一直找不到有意义的题可以写,这次也不算多么有意义,只是今天是比较空的一天,趁这个时候写一写。


    A.

    B.

    有一点贪心,先把每个拿去3的倍数,余下0或1或2,然后三个一起拿。

    对于以上的做法我们少考虑了一种情况:

    即 a,b,c三个数对3取模以后为2 2 0

    假如 c >= 3,   那么  我把c拿得只剩 3, 那么 2 2 3 可以拿2次, 而 以上的贪心只能拿1次。

    所以这种情况还要加上一次

    code


    C.

    先算出1个字符串周期分别在x,y方向上走了xx,yy步

    所以它能到达的点必定是   Kxx+x0, Kyy+y0, (x0, y0)是一个字符串内能走到的所有点(K是非负数)。

    所以我们就是要看看某个方程 a = Kxx+x0, b = Kyy+y0。只要有一个(x0, y0)让方程的K有解,那么Yes

    否则No,这里我们要注意 当xx == 0时 a == x0情况下K的解才是任意非负数,同理yy也一样。

    code


    D.

    我用贪心解的,考虑2种情况。假设两人的编号为A,B。A一直是atk的。

    1.不能能把全部的def,atk打完。 这时我们不必管def,A从大到小排,B的atk从小到大排, A每次拿最大的去打B最小的(要能打赢才能算分) 即可。

    2.能把全部的def,atk打完。  这时我们先必须打def,A从小到大排, B的def从小到大排,用A最小的去打B最小的(要能就打掉,不能就保存下来A)。然后剩下来的A(已经是从小到大的顺序),B的atk从小到大排,用A最小的去打B最小的(要能打赢才能算分,不能打掉的放到最后全打完以后打),  这里要注意 要判 def 和atk是否打完。 

    code


    E.

    适当分析一下,题目必然有解。

    我的做法是 从叶子到根往上放。每个节点保存 它要放的字符和 以它为根的子树中 各个字母的有效总数

    后一个信息的解释:

    1.对于每个叶子我们都放Z,那么假如  有这么一颗树( u,v1,v2,v3), v1,v2,v2已经都放Z, 那么u就放Y,

    那么对于 v1, v2,v3的3个Z考虑与否就不会影响往上放的时候的字母。v1,v2,v3这3个Z是无效的

    2.相反, 有这么一颗树( u,v)  v放Y,u放Z 那么下面的v是会影响往上放的时候的字母。v这个Y是有效的。


          那么我们只要模拟这两种情况即可。对于每个子树的根u,有( u,v1,v2,v3,....),我们通过 “以u为根的子树中 各个字母的有效总数”这一信息来确定u要放什么字母。下面 所说的字母总和都是指有效字母。

          先找出 字母总和 >= 2的最小的字母(下标k,字母标号0-----25)。然后从k----0的顺序找第一个   字母总和为0的字母。这个字母就是要放的字母。   假如有  C:1  D:2  Z:  2 这种情况我们放B ,假如有  B:1  D:2  Z:  2 这种情况我们放C, 然后我们还要清除失效的字母总和, 很显然对于  k的字母总和就为1, k+1------25就被清除了,都为0。

    code


  • 相关阅读:
    windows7安装django并创建第一个应用
    windows7下安装python环境和django
    js中caller和callee属性详解
    分享一个Python脚本--统计redis key类型数据大小分布
    你真的懂git 吗
    如何禁止打印页面
    ZooKeeper入门实战教程(一)-介绍与核心概念
    【shell】shell中各种括号的作用()、(())、[]、[[]]、{}
    Web Components 入门实例教程
    npx 使用教程
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3165810.html
Copyright © 2011-2022 走看看