ABC267总结

比赛链接

比赛情况

AC:6 / 8

题目分析

A(语法入门)

打表周一到周五即可

B(基础算法)

按照题意计算即可

假如1号球没倒,则非法

否则分别找最左和最右分别没倒的列,判断中间是否有一列全倒了

image

上图中红色列代表最左没倒,蓝色列代表最右没倒,黄色列打表中间全倒了的

C(简单模拟)

考虑区间整体右移的变化,假设末尾为 i,如下图所示:

image

显然红色部分没了,黄色部分各少一个,蓝色部分多 m

前缀和预处理一下,fi=fi1+Si1Sim1+ai×m

答案为 maxi=mnfi

D(基础DP)

dp(i,j) 为前 i 个数选 j 个的最小代价

显然,枚举当前数选或不选

  1. 选:dp(i,j)=dp(i1,j1)+ai×j
  2. 不选:dp(i,j)=dp(i1,j)

答案即为 dp(n,m)

E(图论+二分)

显然,最大的最小,二分最大值

把符合条件的放进队里,然后使和其相连的减去,如果符合条件再丢进队里

如果所有数最后都符合条件则可行

F(树的直径+树上倍增)

显然,离一个点最远的点一定是树直径的两端点之一(求树直径两遍dfs做法时已证)

而离这个点越远显然机会更多

所以先求树直径,然后以树直径两端点建树,每个询问 u 分别在这两颗树上找第 k 个父节点,这个过程可以用树上倍增实现

posted @   zhangtingxi  阅读(187)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示