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\) 分。

转载于:https://www.cnblogs.com/Alessandro/p/9854409.html

2018提高组训练Day2相关推荐

  1. 20201104CSP提高组训练

    20201104CSP提高组训练 普通快乐 题目 题目描述 输入格式 输出格式 输入输出样例 说明/提示 数据范围 样例解释 思路 代码 我的(#1+.cpp) 题解(#1std.cpp) 附:关于对 ...

  2. NOIP 2018提高组复赛C/C++试题及答案详解

    NOIP 2018提高组历年真题 CCF NOIP2018 初赛提高组 C++语言试题 第 1 页,共9 页 第二十四届全国青少年信息学奥林匹克联赛初赛 提高组 C++语言试题 竞赛时间:2018 年 ...

  3. 2018 NOIP 提高组 复赛 day2

    文章目录 T1 旅行 T1 分析 T2 填数游戏 T2 分析 T3 保卫王国 T3 分析 不得不说-noip的趋势越来越像是day1基础+思路稳定分数,基本确定你能在哪个获奖区,day2难度提高,给满 ...

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

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

  5. JZOJ 5794. 2018.08.10【2018提高组】模拟A组省选 旅行

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

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

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

  7. JZOJ 2018.07.15【2018提高组】模拟C组

    目录: 4024. [佛山市选2015]石子游戏 4025. [佛山市选2015]找回密码 2136. [GDKOI2004]汉诺塔 2137. [GDKOI2004]城市统计 4024. [佛山市选 ...

  8. 正睿 2018 提高组十连测 Day4 T3 碳

    记'1'为+1,'0'为-1; 可以发现 pre[i],suf[i]分别为前/后缀和 a[i]=max(pre[l.....i]); b[i]=max(suf[i+1....r]); ans=max( ...

  9. 【NOIP 2018 提高组】填数游戏

    传送门 problem 小 D 特别喜欢玩游戏.这一天,他在玩一款填数游戏. 这个填数游戏的棋盘是一个 n×mn \times mn×m 的矩形表格.玩家需要在表格的每个格子中填入一个数字(数字 00 ...

最新文章

  1. awt简单应用 panel面板
  2. 从明天起,做一个幸福的人。喂马,砍柴,周游世界
  3. VMware vCenter Converter Standlone迁移手册
  4. MM模块操作流程及相关建议代码
  5. python if条件思维导图_跟老齐学Python之从if开始语句的征程
  6. 重新ICP,在没有Matlab的日子里
  7. 想创业没有资金,如何获得启动资金?
  8. 视频领域的Instagram:Viddy用户突破2600万
  9. Java编程技巧之单元测试用例编写流程
  10. Swift中文教程(十七) 可选链
  11. mysql dede arctiny_如何用织梦SQL命令行工具操作数据库及常用sql语句整理
  12. SQL表连接,排序输出
  13. mysql2个字段还会map_通过注解实现MyBatis将sql查询结果的两个字段分别作为map的key,value...
  14. 微信小程序引入iconfont实现添加自定义颜色图标
  15. Swift iOS HealthKit 使用案例: 获取体温列表 HKHealthStore
  16. 一款简单微信小程序个人博客。后端基于SpringBoot实现
  17. python编写poc_POC编写基础知识
  18. Java Springboot 使用 OpenOffice 实现Excel转PDF
  19. VMware下centos/Linux鼠标移动闪烁解决办法(两种办法100%解决)
  20. ApacheCN 计算机视觉译文集 20211110 更新

热门文章

  1. Servlet 生命周期介绍
  2. Oracle 日志的核心意义(快速提交,写缓存,回滚)
  3. eclipse3.6默认指向 WebContent 目录 修改为 webRoot
  4. python操作手机app_【Python】[技术博客] 一些使用Python编写获取手机App日志的操作...
  5. java url连接,Java - 线程中的URL连接
  6. python中的wheel有什么用_什么是Python Wheels?为什么要学Python Wheels
  7. 【干货】连交换机的攻击、防御都不懂,还做什么网络工程师
  8. hashmap赋值给另一个hashmap_图解设计一个 HashMap
  9. 设置finder窗口大小_五个Finder技巧让你快速提高工作效率
  10. Thoughtworks 正式成为阿里云云原生核心合作伙伴