• Codeforces Round #386(div 2)


    A

    =w=

    B

    QAQ

    C

    ^o^

    D

    题意:小明要和a+b杯茶共n杯,有绿茶a杯,黑茶b杯。小明喝同一种茶最多连续喝k杯。问是否存在一种方案使得小明喝完这n杯茶,是则输出任意一种顺序。

    分析:贪心

      我们的目标是尽可能制造绿茶和黑茶相等的局面,所以先尽可能将多的那个喝成与少的那个相等,若相等则直接可以了,若不相等则喝一杯少的,再继续尽可能喝那多的,如果中间无法操作则-1

    E

    题意:现在给了n个数字,然后还有一个1到m,代表可以把a里面任意一个数换成1-m,最后需要保证a数组里面的所有的数的奇数个数等于偶数个数,问最少的换的次数,以及换了之后的数组是什么样子的,当然还有不能达到的情况,输出“-1”。

    分析:思维题

      把奇数和偶数分开处理

      开两个set,将奇数数组里的不相同的数放进一个set,将偶数数组里的不相同的数放进另一个set

      奇数指针p=1,偶数指针q=2

      依次遍历奇数数组和偶数数组中重复出现的数(它们需要被改掉) 每次放数,p+=2,q+=2,当然如果p,q在各自的set中出现过,则还要再增加,一直到没有出现过为止

      当然这样只是能保证奇数数组中的数都不同,偶数数组中的数都不同,而奇数和偶数的总数还不一定相等

      为了解决这种情况,不放假设奇数数量>偶数数量

      那么需要先开始用p的自增来替代偶数数组中重复出现的数,直到奇偶数量平衡

      在上述所有的p,q自增操作中,一旦超过了m,则说明不可行,输出-1

      在操作过程中,记录下每个位置最终的答案得到ans[],与原始的x[]比较得出最少更改多少个

    F

    题意:一个人又k的时间听n首音乐,每一首音乐都有一个愉快度,然后这个人可以选择听这首音乐完整时间t,1/2向上取整的时间,还要满足听了一半的个数<=m

    分析:模拟+set

      考虑一段x首歌,最优的方法肯定是让其中时间最长的m首歌曲时间减半

      考虑一个可行解i~j,那么对于下一个可行解i+1~x,那么x>=j,即两个指针是非单减的,所以只要弄个数据结构维护这一类似单调队列的东西

      具体的做法是弄两个set表示一段区间中未减半时间的和减半时间的

      每次判断j指针能否后移,先看减半时间的set是否满了,若未满直接判断加入减半时间是否合法;若满了则判断减半时间的set中的最小值和t[j]大小,如果t[j]大就将最小的那个放进未减半时间set中,t[j]放入减半时间那个,判断是否合法

      对于每个i指针,求出最远的j指针,并不断更新答案

      然后需要对i指针进行删除

      若i在未减半set中,直接删除,若在减半set中,把i删除后还需要把另一个set中最大的那个加入减半set中

      注意set.end()是开区间,所以取一个set最大的时候需要先得到它的迭代器,然后自减

    G

    题意:给出一颗树每个深度节点的个数,并给出叶子节点的个数,问能否形成一个树,若能输出任意一种

    分析:构造

      考虑最少要多少叶子节点

      最底层的,以及第i层节点数量比第i+1层节点数量多的这种都肯定是叶子节点,统计最少叶子节点的总数,和给出的比较,如果不够,则输出-1,否则将那种节点全部标记为叶子节点

      对于那些多的叶子节点,可以自底向上尽可能标记

      最后根据标记输出可行方案即可

      先看哪些是必须为叶子节点的

  • 相关阅读:
    电商数据分析模型
    电商系统中的商品模型的分析与设计
    java枚举使用详解
    运用四色建模法进行领域分析
    UML,Powerdesigner 使用方法
    powerdsigner Association Multiplicity
    UML的类图、时序图表示方法以及惯例
    面向对象分析与设计—四色原型模式(彩色建模、领域无关模型)(概念版)
    知识读书笔记
    知识型读书笔记
  • 原文地址:https://www.cnblogs.com/wmrv587/p/6263086.html
Copyright © 2020-2023  润新知