zoukankan      html  css  js  c++  java
  • Codeforces Round #744 (Div. 3) 题解(A-F)

    A. Casimir's String Solitaire

    两个操作中B是重合的,所以看A的个数加C的个数等不等于B的个数

    B. Shifting Sort

    注意到(n)比较小,所以可以比较暴力,类似于选择排序,每次找到第(i)小的元素,然后想办法把它搞到第(i)个位置。

    假设第(i)小位于(j),那么通过i j j - i就可以把第(i)小搞到第(i)个位置。

    C. Ticks

    注意到没有限制一个格子不能被画多次,那么就可以对于每一个格子,在满足条件的前提下画最大的tick,看能不能得到原图。

    D. Productive Meeting

    假设(a)升序排序之后得到(b)

    有一个非常显而易见的结论:假设(b_n > sum_{i = 1} ^ {n - 1}b_i),那么将前(n-1)个人都跟第(n)个人单聊是最优的。

    但是有可能不满足上面的条件,这个时候可以让前(n-1)个人内部单聊,一次单聊可以使和减2,一旦减到小于(b_n),就用上面的结论。

    又因为每次前(n-1)个人内部单聊都只会使和减2,所以这样操作肯定使最优的。

    E1. Permutation Minimization by Deque

    贪就完了。

    首先将(a_1)入队,这个时候无所谓从前还是从后。

    然后就贪心,如果(a_i)比队首小就头插,否则就尾插。

    E2. Array Optimization by Deque

    贪就完了。

    头插,逆序对数增加队列中比(a_i)小的元素个数。

    尾插,逆序对数增加队列中比(a_i)大的元素个数。

    贪心取二者中较小值。

    元素个数随便拿个平衡树维护一下就完事了。

    F. Array Stabilization (AND version)

    首先,每次操作相当于一次置换,所以最终可以分为一个或者多个不相交的子置换,问题也可以分别解决,即整体的答案为所有子置换答案的最大值,如果有一个子置换无解,则整体的答案也无解。

    对于一个子置换,这个子置换无解当且仅当这个置换对应元素均为1。

    否则,对于置换(p),原操作相当于(p & p^{ ightarrow1})。那么对于(p)中的每一个1,它变成0的最小操作数等于它和它前面最近的0的距离,如果前面没有0就拿最后一个0。置换的答案等于所有1变成0所需操作数的最大值。

    G. Minimal Coverage

    还没想出来

    吐槽

    宿舍实在是住不下去了,溜了溜了自己租个房子,刚好国庆搬家,房租死贵,但是搬完整个人都舒服了

  • 相关阅读:
    Cocos2d-x游戏《雷电大战》开源啦!要源代码要资源快快来~~
    Tomcat部署项目时出错java.lang.IllegalStateException: ContainerBase.addChild: start:org.apache.catalina.Life
    PCA主成分分析Python实现
    C语言知识结构之二
    javascript中构造函数的返回值问题和new对象的过程
    poj 1694 An Old Stone Game 树形dp
    Android新技术学习——阿里巴巴免Root无侵入AOP框架Dexposed
    c++中vector向量几种情况的总结(向量指针,指针的向量)
    Hash分析
    三期_day05_Dao层的准备工作_II
  • 原文地址:https://www.cnblogs.com/zengzk/p/15361098.html
Copyright © 2011-2022 走看看