zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    团队项目 第一次作业
    20165201 课下作业第十周(选做)
    20165201 实验三敏捷开发与XP实践
    20165201 2017-2018-2 《Java程序设计》第9周学习总结
    20165201 结对编程练习_四则运算(第二周)
    20165201 2017-2018-2 《Java程序设计》第8周学习总结
    20165201 实验二面向对象程序设计
    20165326 java实验五
    20165326 课程总结
    20165326 java实验四
  • 原文地址:https://www.cnblogs.com/OYzx/p/5939763.html
Copyright © 2011-2022 走看看