• noip2016十连测round3


    A:平均数

    题意:有一天,小 A 得到了一个长度为 n 的序列。

    他把这个序列的所有连续子序列都列了出来,并对每一个子序列
    都求了其平均值,然后他把这些平均值写在纸上,并对它们进行排序,
    最后他报出了第 k 小的平均值。
    你要做的就是模仿他的过程。

    做法:因为题目中的k很大,所以考虑二分答案,问题就是转化有多少个子序列的平均值小于等于k,我们把每个序列用mid减去它,然后维护一个前缀和,问题就变成了求这个前缀和数组的逆序对数,用归并排序或树状数组+离散化维护即可。

    B:涂色游戏

    题意:小A和小B在做游戏。他们找到了一个n行m列呈网格状的画板。小A拿出了p支不同颜色的画笔,开始在上面涂色。看
    到小A涂好的画板,小B觉得颜色太单调了,于是把画板擦干净,希望涂上使它看起来不单调的颜色(当然,每个格
    子里只能涂一种颜色)。小B想知道一共有多少种不单调的涂色方案。我们定义一个涂色方案是不单调的,当且仅
    当任意相邻两列都出现了至少q种颜色。

    做法:矩阵乘法+dp,具体见题解;

    C:序列

    题意:小A把自己之前得到的序列展示给了小B,不过这一次,他并不要求小B模仿他之前的行为。他给了小B一些询问,每
    个询问都是lrx的形式,要求小B数出在序列的第l个到第r个元素中有多少是不小于x的。小B很快就算出来了。小A
    很不甘心,于是要求动态修改这个序列……这样,他只要求每次修改后求出所有询问答案的和即可。然而小B还是
    很快就算出来了,小A很生气,于是把问题抛给了你。

    做法·:用线段树维护所有的询问,对每个节点开个vector,按x排序,然后对于每次修改,我们发现,改一个位置上的值,只会影响到log个区间,在每个区间上面二分即可,复杂度为nlog^2。

  • 相关阅读:
    [POJ1724]ROADS
    表达式求值
    [NOIp2017提高组]奶酪(BFS)
    [NOIp2012提高组]Vigenère 密码
    [NOIp2012提高组]国王游戏
    [POJ1321]棋盘问题
    [POJ3009]Curling2.0
    垃圾陷阱
    2019CSP day1t2 括号树
    2019CSP游记
  • 原文地址:https://www.cnblogs.com/OYzx/p/5939763.html
Copyright © 2020-2023  润新知