Solution Set - 杭电多校 2022 Day2 一句话题解
A:看了题就很容易想到虚树吧,建出虚树后考虑整体扫一遍虚树,注意到这是一棵根向树,那么统计其实十分简单,将对 \(C\) 类节点的标记下放,\(A,B\) 类节点同时上传,如果在 DFS 的过程中发现这个节点可以被 \(A,B\) 类节点同时到达,则分讨取 \(u\) 还是取 \((u,fa)\) 即可,时间复杂度瓶颈在建立虚树,可以使用一些技巧做到线性吧。
B:沙比提/oh
C:不知道正解是啥,实际上可以直接暴力然后循环展开就碾过去了。隔壁队伍 vector 纯暴力都过了/oh
D:很明显,我不会三维几何。
E:赛时咋不读题呢?傻逼题错过了。如果可以确定一个技能影响的区间,问题变为区间可重覆盖方案计数,至此问题被分为两部分:
首先先考虑如何确定区间,考虑先求单边的,比如说先求右边,考虑使用排序制造单调性,将怪物按 \(a_i-b_{i+1}\) 从大到小排序,将技能按 \(R_i\) 从大到小排序,使用并查集维护被连锁的怪物即可。
接下来考虑 DP,设 \(f_i\) 表示 \(1\sim i\) 被完全覆盖的方案数,按右端点从小到大扫描每一个覆盖区间 \([l,r]\),有 DP 转移式:\(f_r\to \sum_{i=l-1}^r f_i\),\(\forall0\le i\le l-2, f_i\to f_i\times 2\)。
使用支持区间乘,单点加的线段树维护即可,时间复杂度线性对数。
F:设 \(f_i\) 表示升级到 \(i\) 所需的期望次数,考虑一本升级书 \((a,b)\):
- 用:\(f_{i+1}\to f_i+1+(1-a)(1-b)(f_{i+1}-f_i)+(1-a)b f_{i+1}=(1-a)f_{i+1}+(a+b-ab)f_i+1\),后两项的含义是加上失败和报废的概率。
- 不用:\(f_{i+1}\to f_{i+1}+1\)。
所以说 \(f_{i+1}\to \frac1{AB}\sum_{a,b}\min\{(1-a)f_{i+1}+(a+b-ab)f_i+1,f_{i+1}+1\}\),\(\min\) 不好转移,使用一些分类讨论的操作,考察:
\]
化简后变成:
\]
这个时候我们找到了一些性质,即按 \(\frac{a+b-ab}{a}\) 排序后的二元组,一定是一段前缀使用,剩下的一定不用,枚举这段前缀的长度 \(t\),有:
\]
考察在特定 \(t\) 下的式子,记 \(x=\sum_{a,b\text{ pre }t}(1-a),y=\sum_{a,b\text{ pre }t}(a+b-ab)\),\(x\) 和 \(y\) 可以随意维护:
\]
化简一下可以得到:
\]
直接计算即可,时间复杂度为 \(O(ABK)\)。
G:有人老老实实读完了题面,我不说是谁。
H:对连续段进行哈希,为了比较方便特别处理首段和末段就行了。
I:听说很简单,不是我写的就鸽了。
J:恶臭题,注意到小 A 会走任意一棵最大生成树,根据最大生成树的形态,可以将图上的边分为三种:
- 关键边,无论如何,最大生成树上一定会包含这条边。
- 关建边,最大生成树上可能包含的边。
- 没用边,无论如何,最大生成树上一定不会有的边。
按边权排序后将相同边权的边放在一起处理,对于 Kruskal 中维护的连通块,连出相同边权的边(不连自环)后使用 Tarjan 算法求出桥边即可,因为桥边一定是关键边,自环则一定是没用边,其他被建出的边一定是关建边,如果此时 Kruskal 过程结束了,那么剩下的边就是没用边。
如果存在关键边,放一个人在关键边即可,否则的话,考虑关建边形成的子图,问题变为求删去尽可能少的边使图不连通,这是一个平面图最小割,套板即可。
K:恶臭题,维护最大,最小,次大,次小,一对,一对加最大,一对减最小,两对的答案,使用线段树维护即可。
L:大范围贪心,小范围背包即可。
Solution Set - 杭电多校 2022 Day2 一句话题解的更多相关文章
- 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)
以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...
- 2018 Multi-University Training Contest 1 杭电多校第一场
抱着可能杭电的多校1比牛客的多校1更恐怖的想法 看到三道签到题 幸福的都快哭出来了好吗 1001 Maximum Multiple(hdoj 6298) 链接:http://acm.hdu.edu. ...
- 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)
咕咕咕了太久 多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场…… 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组 ...
- 2018 Multi-University Training Contest 2 杭电多校第二场
开始逐渐习惯被多校虐orz 菜是原罪 1004 Game (hdoj 6312) 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6312 虽然披着 ...
- 2018 杭电多校3 - M.Walking Plan
题目链接 Problem Description There are $$$n$$$ intersections in Bytetown, connected with $$$m$$$ one way ...
- 2017杭电多校第六场1011Classes
传送门 Classes Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tota ...
- 2017杭电多校第五场Rikka with Subset
Rikka with Subset Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- 2019杭电多校&CCPC网络赛&大一总结
多校结束了, 网络赛结束了.发现自己还是太菜了,多校基本就是爆零和签到徘徊,第一次打这种高强度的比赛, 全英文,知识点又很广,充分暴露了自己菜的事实,发现数学还是很重要的.还是要多刷题,少玩游戏. 网 ...
- HDU 4941 Magical Forest(map映射+二分查找)杭电多校训练赛第七场1007
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 解题报告:给你一个n*m的矩阵,矩阵的一些方格中有水果,每个水果有一个能量值,现在有三种操作,第 ...
- HDU 4902 Nice boat 2014杭电多校训练赛第四场F题(线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 解题报告:输入一个序列,然后有q次操作,操作有两种,第一种是把区间 (l,r) 变成x,第二种是 ...
随机推荐
- class和struct区别
类(class) 引用类型:将一个对象赋值给另一个对象时,系统不会对此对象进行拷贝,而会将指向这个对象的指针赋值给另一个对象,当修改其中一个对象的值时,另一个对象的值会随之改变. 结构体(struct ...
- ComWin’ round 11部分题解
https://vjudge.net/contest/325913#overview A.Threehouses 题意:一直二维平面上的$n$个点中,前$e$个点落在小岛周围,并且有$p$条边已经连接 ...
- calendar.getActualMaximum(calendar.DAY_OF_MONTH)的陷阱,2月份最后一天成了3月3号
引用一下别人的链接: https://blog.csdn.net/dongyuxu342719/article/details/78131697
- Cannot read property 'xxxx' of null
在使用的vue3+element-plus的项目中,我使用了form表单对数据进行校验. 但是使用了: refDom.value.validate((valid) => {}) 后,过一会控制台 ...
- docker指令 —— MySQL一条龙服务
一.拉取MySQL镜像 简单粗暴拉取: docker pull mysql 拉取合适的版本,docker mysql Tag: # 例如拉取8.0.25 docker pull mysql:8.0.2 ...
- Mysql主从备份指定库别名
问题:replicate-rewrite-db 不生效 解决方案: 尝试 注释掉 replicate-do-db ,不写 replicate-ignore-db,只写 replicate-rewri ...
- git prior sync failed; rebase still in progress
方案一: 将这个git直接删掉,rm common/ -rf 然后再回到项目根目录repo sync 方案二: git rebase --abort
- jmeter接口之json提取器应用
在接口测试中有一个这样的场景:业务接口需要用到登录token:下个接口需要用到前个接口返回值作为参数,该怎么实现? 首先先看下登录.业务接口,本文用的jmeter版本为5.4.1 一.json提取器设 ...
- shm
进程间共享内存访问及读写 目录 进程间共享内存访问及读写 1. 进程间共享内存相关linux_C函数 2. 进程间共享内存基本流程 3. demo code 1. 进程间共享内存相关linux_C函数 ...
- 使用Libusb测试USB device
一. 先准备好测试工具 -- Libusb: 在Linux中使用的话: 首先从 http://www.libusb.org/官网中下载libusb 然后解压之后./configure --> m ...