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\) 不好转移,使用一些分类讨论的操作,考察:

\[f_{i+1}+1\ge (1-a)f_{i+1}+(a+b-ab)f_i+1
\]

化简后变成:

\[f_{i+1}\ge \frac{a+b-ab}{a}f_i
\]

这个时候我们找到了一些性质,即按 \(\frac{a+b-ab}{a}\) 排序后的二元组,一定是一段前缀使用,剩下的一定不用,枚举这段前缀的长度 \(t\),有:

\[f_{i+1}\to \min_t\{\frac 1 {AB} ((AB-t)(f_{i+1}+1)+\sum_{a,b\text{ pre }t}(1-a)f_{i+1}+(a+b-ab)f_i+1)\}
\]

考察在特定 \(t\) 下的式子,记 \(x=\sum_{a,b\text{ pre }t}(1-a),y=\sum_{a,b\text{ pre }t}(a+b-ab)\),\(x\) 和 \(y\) 可以随意维护:

\[ABf_{i+1}=(AB-t)f_{i+1}+AB-t+xf_{i+1}+yf_i + t
\]

化简一下可以得到:

\[(t-x)f_{i+1}=AB+yf_i
\]

直接计算即可,时间复杂度为 \(O(ABK)\)。

G:有人老老实实读完了题面,我不说是谁。

H:对连续段进行哈希,为了比较方便特别处理首段和末段就行了。

I:听说很简单,不是我写的就鸽了。

J:恶臭题,注意到小 A 会走任意一棵最大生成树,根据最大生成树的形态,可以将图上的边分为三种:

  • 关键边,无论如何,最大生成树上一定会包含这条边。
  • 关建边,最大生成树上可能包含的边。
  • 没用边,无论如何,最大生成树上一定不会有的边。

按边权排序后将相同边权的边放在一起处理,对于 Kruskal 中维护的连通块,连出相同边权的边(不连自环)后使用 Tarjan 算法求出桥边即可,因为桥边一定是关键边,自环则一定是没用边,其他被建出的边一定是关建边,如果此时 Kruskal 过程结束了,那么剩下的边就是没用边。

如果存在关键边,放一个人在关键边即可,否则的话,考虑关建边形成的子图,问题变为求删去尽可能少的边使图不连通,这是一个平面图最小割,套板即可。

K:恶臭题,维护最大,最小,次大,次小,一对,一对加最大,一对减最小,两对的答案,使用线段树维护即可。

L:大范围贪心,小范围背包即可。

Solution Set - 杭电多校 2022 Day2 一句话题解的更多相关文章

  1. 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)

    以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...

  2. 2018 Multi-University Training Contest 1 杭电多校第一场

    抱着可能杭电的多校1比牛客的多校1更恐怖的想法 看到三道签到题 幸福的都快哭出来了好吗 1001  Maximum Multiple(hdoj 6298) 链接:http://acm.hdu.edu. ...

  3. 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)

    咕咕咕了太久  多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场…… 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组 ...

  4. 2018 Multi-University Training Contest 2 杭电多校第二场

    开始逐渐习惯被多校虐orz  菜是原罪 1004  Game    (hdoj 6312) 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6312 虽然披着 ...

  5. 2018 杭电多校3 - M.Walking Plan

    题目链接 Problem Description There are $$$n$$$ intersections in Bytetown, connected with $$$m$$$ one way ...

  6. 2017杭电多校第六场1011Classes

    传送门 Classes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tota ...

  7. 2017杭电多校第五场Rikka with Subset

    Rikka with Subset Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  8. 2019杭电多校&CCPC网络赛&大一总结

    多校结束了, 网络赛结束了.发现自己还是太菜了,多校基本就是爆零和签到徘徊,第一次打这种高强度的比赛, 全英文,知识点又很广,充分暴露了自己菜的事实,发现数学还是很重要的.还是要多刷题,少玩游戏. 网 ...

  9. HDU 4941 Magical Forest(map映射+二分查找)杭电多校训练赛第七场1007

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 解题报告:给你一个n*m的矩阵,矩阵的一些方格中有水果,每个水果有一个能量值,现在有三种操作,第 ...

  10. HDU 4902 Nice boat 2014杭电多校训练赛第四场F题(线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 解题报告:输入一个序列,然后有q次操作,操作有两种,第一种是把区间 (l,r) 变成x,第二种是 ...

随机推荐

  1. 时间序列分析2.X AR与MA

    ARMA与ARIMA模型 对平稳时间序列和非平稳时间序列,分别假定适当的 ARMA 模型和 ARIMA 模型 对非平稳时间序列建立 ARIMA 模型,实际上是通过先用适当的变换将非平稳序列转化为平稳序 ...

  2. 蓝牙mesh组网实践(环境监测传感器应用)

    目录 蓝牙mesh组网中的低功耗节点,在应用于低频率上传数据的传感器网络时有着得天独厚的功耗优势,在1min唤醒上传一包的情况下ch582的平均功耗仅有12uA,若每小时甚至每天采样一次数据并上传,平 ...

  3. 容器 之搭建 jenkins ci 平台

    1 部署 gitlab docker run -d \ --name gitlab \ -p 8443:443 \ -p 80:80 \ -p 9998:22 \ -v $PWD/config:/et ...

  4. Oralyzer-20220205

    Usage: oralyzer.py [-h] [-u URL] [-l PATH] [-crlf] [-p PAYLOAD] [--proxy] [--wayback] 可选参数: -h, --he ...

  5. TM1621断码液晶驱动IC的原理、驱动代码

    TM1621是一个多功能的LCD驱动器,带有蜂鸣器驱动功能.通讯采用四线串行接口 TM1621的难点在于字节序和显存跟屏幕的映射关系上,下面是写寄存器的代码 void Delay_us(uint8_t ...

  6. CH32F103C8T6调试口Disable后的修复办法

    1.问题描述 因为软件编程,将CH32F103的 debug disable了,无法通过仿真器下载程序. 2. 修复 2.1 解决思路 利用厂家给的串口ISP进行下载(HUSB或者COM) 2.2 硬 ...

  7. mysql转国产数据库达梦随记

    记录一下转换的一些小坑. window环境 项目是springboot+ activiti6 + vue 第一步转移数据: mysql5.7  ---> 达梦7 这里使用dm的工具进行转换.发现 ...

  8. vue项目跳转外部链接,替换链接地址参数信息

    //修改url某个指定的参数 url 地址. paramName 参数.   repalceValue替换的新值 replaceUrl( url, paramName, repalceValue){ ...

  9. Android中动态添加tab

    来源过于啰嗦,这里只有简化后的. 转载请注明出处  http://www.cnblogs.com/zaiyuzhong/p/add-tab-dynamic-in-android.html 建立对应的布 ...

  10. jQuery对象和js对象是怎样转换的?

    两种转换方式将一个jQuery对象转换成js对象:[index]和.get(index); (1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的js对象. 如:var $v ...