2018提高组训练Day2
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相关推荐
- 20201104CSP提高组训练
20201104CSP提高组训练 普通快乐 题目 题目描述 输入格式 输出格式 输入输出样例 说明/提示 数据范围 样例解释 思路 代码 我的(#1+.cpp) 题解(#1std.cpp) 附:关于对 ...
- NOIP 2018提高组复赛C/C++试题及答案详解
NOIP 2018提高组历年真题 CCF NOIP2018 初赛提高组 C++语言试题 第 1 页,共9 页 第二十四届全国青少年信息学奥林匹克联赛初赛 提高组 C++语言试题 竞赛时间:2018 年 ...
- 2018 NOIP 提高组 复赛 day2
文章目录 T1 旅行 T1 分析 T2 填数游戏 T2 分析 T3 保卫王国 T3 分析 不得不说-noip的趋势越来越像是day1基础+思路稳定分数,基本确定你能在哪个获奖区,day2难度提高,给满 ...
- noip2011提高组day1+day2解题报告
Day1 T1铺地毯https://www.luogu.org/problem/show?pid=1003 [题目分析] 全部读入以后从最后一个往前找,找到一个矩形的范围覆盖了这个点,那这个矩形就是最 ...
- JZOJ 5794. 2018.08.10【2018提高组】模拟A组省选 旅行
Description 悠悠岁月,不知不觉,距那传说中的pppfish晋级泡泡帝已是过 去数十年.数十年 中,这颗泡泡树上,也是再度变得精彩,各种泡泡 天才辈出,惊艳世人,然而,似乎 不论后人如何的出 ...
- NOIP 2018 提高组初赛试题 题目+答案+简要解析
一.单项选择题(共 10 题,每题 2 分,共计 20 分: 每题有且仅有一个正确选项) 1. 下列四个不同进制的数中,与其它三项数值上不相等的是( ). A. (269) 16 B. (617 ...
- JZOJ 2018.07.15【2018提高组】模拟C组
目录: 4024. [佛山市选2015]石子游戏 4025. [佛山市选2015]找回密码 2136. [GDKOI2004]汉诺塔 2137. [GDKOI2004]城市统计 4024. [佛山市选 ...
- 正睿 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( ...
- 【NOIP 2018 提高组】填数游戏
传送门 problem 小 D 特别喜欢玩游戏.这一天,他在玩一款填数游戏. 这个填数游戏的棋盘是一个 n×mn \times mn×m 的矩形表格.玩家需要在表格的每个格子中填入一个数字(数字 00 ...
最新文章
- awt简单应用 panel面板
- 从明天起,做一个幸福的人。喂马,砍柴,周游世界
- VMware vCenter Converter Standlone迁移手册
- MM模块操作流程及相关建议代码
- python if条件思维导图_跟老齐学Python之从if开始语句的征程
- 重新ICP,在没有Matlab的日子里
- 想创业没有资金,如何获得启动资金?
- 视频领域的Instagram:Viddy用户突破2600万
- Java编程技巧之单元测试用例编写流程
- Swift中文教程(十七) 可选链
- mysql dede arctiny_如何用织梦SQL命令行工具操作数据库及常用sql语句整理
- SQL表连接,排序输出
- mysql2个字段还会map_通过注解实现MyBatis将sql查询结果的两个字段分别作为map的key,value...
- 微信小程序引入iconfont实现添加自定义颜色图标
- Swift iOS HealthKit 使用案例: 获取体温列表 HKHealthStore
- 一款简单微信小程序个人博客。后端基于SpringBoot实现
- python编写poc_POC编写基础知识
- Java Springboot 使用 OpenOffice 实现Excel转PDF
- VMware下centos/Linux鼠标移动闪烁解决办法(两种办法100%解决)
- ApacheCN 计算机视觉译文集 20211110 更新
热门文章
- Servlet 生命周期介绍
- Oracle 日志的核心意义(快速提交,写缓存,回滚)
- eclipse3.6默认指向 WebContent 目录 修改为 webRoot
- python操作手机app_【Python】[技术博客] 一些使用Python编写获取手机App日志的操作...
- java url连接,Java - 线程中的URL连接
- python中的wheel有什么用_什么是Python Wheels?为什么要学Python Wheels
- 【干货】连交换机的攻击、防御都不懂,还做什么网络工程师
- hashmap赋值给另一个hashmap_图解设计一个 HashMap
- 设置finder窗口大小_五个Finder技巧让你快速提高工作效率
- Thoughtworks 正式成为阿里云云原生核心合作伙伴