A

算法 1

对于每组询问,暴力的算出每个二次函数的取值。

时间复杂度 \(O(nq)\)。期望得分 \(20\) 分。

算法 2

当 \(x>0\) 时,要求 \(a_ix^2+b_ix\) 的最大值,只需要求出 \(a_ix+b_i\) 的最大值。
于是问题就转化为了,给定一堆直线,求在某些点的最大值。显然答案一定在上凸壳上。
对于每组询问,只要二分出它在上凸壳的哪个位置就行。

同样的,当 \(x<0\) 时,答案在 \(a_ix+b_i\) 的下凸壳上,再写一个凸壳就行了。

时间复杂度 \(O((n+q)\log n)\)。期望得分 \(100\) 分。

B

算法 1

直接按题意枚举,动态规划或是记忆化搜索。

时间复杂度 \(O(a^n)\)。期望得分 \(30\) 分。

算法 2

考虑第二个测试点。只需要记录当前还有多少个位置为 \(1\) 就行了。

时间复杂度 \(O(n)\)。期望得分 \(10\) 分。加上算法 1,期望得分 \(40\) 分。

算法 3

答案可以看成是每一个元素被选中的次数之和。由于期望的线性性,我们可以去计算每一个位置被选中的次数的期望。

首先,第一个元素一定被减了 \(a_1\) 次。

考虑某一个位置 \(i\),假设当前有 \(c\) 个元素不为 \(0\),那么每个元素被操作的概率都是 \(\frac{1}{c}\)。倘若只关注 \(1\) 和 \(i\) 两个元素,可以发现操作其它元素的时候对它们没有影响,而且它们两个被操作的概率是相等的。于是这个问题就等价与一个只有两个元素的原问题。

因此元素之间是独立的!使用算法 1 中的动态规划就可以知道每个元素对答案的贡献,求和即可。

时间复杂度 \(O(a^2+n)\)。期望得分 \(60\) 分。

算法 4

算法 3 中的动态规划可以看成从 \((a_1, a_i)\) 出发的随机游走,每次随机一个方向将减 \(1\),直到走到坐标轴上为止。若停在 \((0,a)\),对答案的贡献为 \(a_i-a\)。若停在 \((a,0)\),对答案的贡献为 \(a_i\)。

于是可以直接写出贡献的式子。

\[\sum_{i=0}^{a_i-1}i*\frac{a_1-1+i\choose i}{2^{a_1+i}}+a_i(1-\sum_{i=0}^{a_i-1}\frac{a_1-1+i\choose i}{2^{a_1+i}})\]

前面那项是停留在 \((0,a)\) 的答案,后面那项是停留在 \((a,0)\) 的答案。

当 \(a_i\) 增加 \(1\) 的时候,变化的贡献可以在 \(O(1)\) 的时间内得到。(前后都是只增加了一项)

时间复杂度 \(O(a+n)\)。期望得分 \(100\) 分。

C

算法 1

对于每组询问,遍历所有节点,看看它是不是在路径上,并计算答案。

时间复杂度 \(O(nq)\)。期望得分 \(10\) 分。

算法 2

由于可能询问的点对只有 \(O(n^2)\) 组,每次枚举 \(u\) 开始深搜。

时间复杂度 \(O(n^2)\)。期望得分 \(20\) 分。

算法 3

当树形态随机的时候,两个点之间期望只有 \(O(\log n)\) 个点,暴力即可。

时间复杂度 \(O(Hq)\)。期望得分 \(20\) 分,结合算法 2,期望得分 \(30\) 分。

算法 4

当 \(a_i<2\) 的时,按位或只会对最后一位产生影响,即,当 \(dist(w,u)\) 为奇数且 \(a_w=1\) 时,答案需要减 \(1\)。于是只要倍增时顺便维护从每一个点 \(t\) 出发,向上 \(2^i\) 的距离之内,与 \(t\) 距离为奇数且点权为 \(1\) 的点的个数就行了。

时间复杂度 \(O(n\log n)\)。期望得分 \(10\) 分,结合算法 2、3,期望得分 \(40\) 分。

算法 5

类似的,可以分别考虑每一个二进制位对答案的贡献。即,对于位 \(2^x\),维护从每一个点 \(t\) 出发,向上 \(2^i\) 的距离之内,与 \(t\) 距离为 \(d\) 满足 \(d \mathbin{\mathrm{and}} 2^x = 2^x\) 且点权的二进制表示中包含 \(2^x\) 的点的个数就行了。

由于路径有向上的部分,也有向下的部分,因此还需要维护满足 \(d \mathbin{\mathrm{and}} 2^x = 0\) 的点的个数在从 \(v\) 倍增的时候使用。

时间复杂度 \(O(n\log n \log a_i)\) 期望得分 \(50\) ~ \(60\) 分。

算法 6

注意到并不需要对于每一个位分别维护点的个数和,只需要维护所有重叠的位的数位和就行了,于是乎可以少掉一个 \(\log\)。

时间复杂度 \(O(n\log n)\) 期望得分 \(100\) 分。

2018提高组训练Day2的更多相关文章

  1. 正睿 2018 提高组十连测 Day2 T2 B

    题目链接 http://www.zhengruioi.com/contest/84/problem/318 题解写的比较清楚,直接扒过来了. B 算法 1 直接按题意枚举,动态规划或是记忆化搜索. 时 ...

  2. noip2011提高组day1+day2解题报告

    Day1 T1铺地毯https://www.luogu.org/problem/show?pid=1003 [题目分析] 全部读入以后从最后一个往前找,找到一个矩形的范围覆盖了这个点,那这个矩形就是最 ...

  3. 【NOIP2016提高组】 Day2 T1 组合数问题

    题目传送门:https://www.luogu.org/problemnew/show/P2822                 ↓题目大意↓ 数据的极限范围:n,m≤2000,k≤21,数据组数≤ ...

  4. 【NOIP2015提高组】Day2 T2 子串

    题目描述 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新的字符串,请问 ...

  5. 【NOIP2015提高组】Day2 T1 跳石头

    题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石(不含起点和终 点的岩石).在比赛过程中,选手们将从 ...

  6. NOIp 2018 提高组

    T1铺设道路 传送门 题目描述 春春是一名道路工程师,负责铺设一条长度为 $ n $ 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 $ n $ 块首尾相连的区域,一开始,第 ii ...

  7. NOIP 2018 提高组初赛解题报告

    单项选择题: D 进制转换题,送分: D 计算机常识题,Python是解释运行的: B 常识题,1984年小平爷爷曰:“娃娃抓起”: A 数据结构常识题,带进去两个数据就可以选出来: D 历年真题没有 ...

  8. [ZJOJ] 5794 2018.08.10【2018提高组】模拟A组&省选 旅行

    Description 悠悠岁月,不知不觉,距那传说中的pppfish晋级泡泡帝已是过 去数十年.数十年 中,这颗泡泡树上,也是再度变得精彩,各种泡泡 天才辈出,惊艳世人,然而,似乎 不论后人如何的出 ...

  9. NOIP 2018 提高组初赛试题 题目+答案+简要解析

    一.单项选择题(共 10  题,每题 2  分,共计 20  分: 每题有且仅有一个正确选项)       1. 下列四个不同进制的数中,与其它三项数值上不相等的是( ). A. (269) 16 B ...

随机推荐

  1. 当前数据库普遍使用wait-for graph等待图来进行死锁检测

    当前数据库普遍使用wait-for graph等待图来进行死锁检测 较超时机制,这是一种更主动的死锁检测方式,innodb引擎也采用wait-for graph SQL Server也使用wait-f ...

  2. java-JProfiler(二)-进行本地JVM的性能监控-tomcat

    监视本地的Tomcat, 看似是本地,其实JProfiler GUI在一个单独的JVM里启动,他与被监视的目标jvm之间通过socket通讯,目的为了不干扰目标JVM.所以监视本地Tomcat与监视远 ...

  3. [LeetCode] 785. Is Graph Bipartite?_Medium tag: DFS, BFS

    Given an undirected graph, return true if and only if it is bipartite. Recall that a graph is bipart ...

  4. [LeetCode] 101. Symmetric Tree_ Easy tag: BFS

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...

  5. [LeetCode] 345. Reverse Vowels of a String_Easy tag:Two Pointers

    Write a function that takes a string as input and reverse only the vowels of a string. Example 1: In ...

  6. NuGet:自定义配置信息(2)

    有些类库项目打包后,如何让别人引用的时候自动添加上对应的配置项目呢,比如EntityFramework的NuGet包,打开后可以看到类似下面的结构: 空白处右击——Add Content Folder ...

  7. PHP查询MySQL大量数据的内存占用分析

    这篇文章主要是从原理, 手册和源码分析在PHP中查询MySQL返回大量结果时, 内存占用的问题, 同时对使用MySQL C API也有涉及. 昨天, 有同事在PHP讨论群里提到, 他做的一个项目由于M ...

  8. Apache+php+mysql环境配置

    Apache+PHP+MySQL环境搭建 标题格式 正文格式 阶段性完成格式 正文中强调格式 ————————————————————————————— 前语:本文是从我写过的doc文档迁移过来的,由 ...

  9. 023-centos6.5上安装使用xtrabackup

    第一步:下载.这个就看你选择什么样的安装方式了,有二进制安装,有源码包安装,有在线的rpm安装.我选择二进制安装方式,所以下载时选择linux-Generic.下载后用rz命令在xshell上上传到l ...

  10. 混合高斯模型(Mixtures of Gaussians)

    http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html 这篇讨论使用期望最大化算法(Expectation-Maximizat ...