2.27 比赛
2.27 比赛
A
据说有神秘做法。
算法一 (0pts)
暴力枚举哪些点传播哪些点不传播。时间复杂度
算法二 (22pts)
我们发现这里的图论模型,如果
显然,最多个点的答案是 SCC 的个数。
所以我们可以暴力建边 tarjan 求解。考虑到
算法三(40pts)
上面那个东西你写的优美一点就可以得到
算法四(55pts)
考虑第一问怎么做。手玩样例和小数据后发现:没有入度的强连通分量个数。
暴力建边,维护每一个 SCC 所含的点,这很好做。时间复杂度
算法五(100pts)
考虑你在图上建边一定是一段区间,这符合线段树建图的特征。把上述过程用线段树建图优化即可。
线段树优化建图
线段树优化建图就是利用两棵线段树,减少连边数量,达到降低复杂度的目的。
考虑如下题目:
有n个点,q个询问,每次询问给出一个操作。
操作
操作
操作
首先,我们发现难点在连边,因为连完边后跑一遍最短路就好了。
我们考虑用两棵线段树来搞,建两棵线段树,一棵处理入边,一棵处理出边。
方便起见,我们下文称其为入树和出树。
开始我们让父亲和儿子连边,然后我们再让入树和出树的叶子节点之间连上边权为
据说很难写。
B
这数据/qd
好像是 pjudge 前几天原题 /jy。
算法一
考虑朴素 dp,即
易得转移式,
前者我们增量式修改动态维护一个 vis 数组即可,均摊下来复杂度对于一个
后者可以用前缀和在预处理
所以这个 dp 就很好写了。时间复杂度
算法二
考虑值域小怎么做,我们把上面的式子转化一下,也就是
然后我们枚举 mex 相同的段,也就是区间查询
时间复杂度
算法三
如果我们遍历所有本质不同的段(或者不同的 mex),时间复杂度都会退化到
注意到在上面的做法中,每个段的查询和
那么查询相当于求区间
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律