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:大范围贪心,小范围背包即可。

最新文章

  1. Quartz2D总结
  2. Mongodb在windows下的安装和启动
  3. 微信webview
  4. php 运行脚本shell
  5. 关于Navigation的BarButtonItem的
  6. 关于工伤事故索赔计算很好用的一款APP
  7. 卷积相关公式的matlab代码
  8. nginx 1.3.9/1.4.0 x86 Brute Force Remote Exploit
  9. PHP学习笔记,自己动手写个MVC的框架 -- base所有代码
  10. Centos6.5环境中安装vsftp服务
  11. Exchange Server 2007的即将生命周期,您的计划是?
  12. 翻译连载 | 附录 A:Transducing(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
  13. 视频转码成mp4格式,添加关键帧,添加元数据,把元数据放在第一帧,可拖动
  14. 为什么比特币和以太坊未必真得比EOS更去中心化?
  15. conda国内源的设置 by dwSun
  16. 42_并发编程-JionableQueue
  17. 【模板】堆优化 + dij +pair 存储
  18. Python 基于python实现的http接口自动化测试框架(含源码)
  19. 第二十七章 springboot + zipkin(brave-okhttp实现)
  20. 垃圾收集器之:G1收集器

热门文章

  1. window 0x00007b无法正常启动解决方法
  2. java 内存锁
  3. Git命令学习总结(廖雪峰官方Git教程)
  4. pip安装psycopg2报错Could not find a version that satisfies the requirement psycopg2
  5. flex_bison
  6. allure-动态参数,报告优化方法。
  7. 微信支付模式二java
  8. 利用XtraBackup实现PXC数据库的热备份
  9. gitlab 安装以及汉化
  10. Linux使用tailf高亮显示关键字