CSP 七连测 day2 比赛反思
CSP 七连测 day2 比赛反思
AI 摘要
比赛Rating终于上涨。T1入门未总结;T2把幽魂形态减伤转为每回合max(0,Ai-k),用前缀和求长度m连续子段最大减免,总伤害减之;T3难度从J组第二跳到NOIP第二,用DP结合树状数组与前后缀预处理求解,答案模998244353;T4暂无。

超爽得吃Rating(终于加一次了QAQ)

ovo

T1 ANDORXOR

一道入门题就不总结了吧…

100pts

T2 Cataclysm Cry

这题应该也是比较简单的。

本题正解思路小总结:

  • 由题意,打出幽魂形态后,连续 mm 个回合受到的伤害变为 min⁡(Ai,k)\min(A_i, k),等价于减免了原本超过 kk 的部分。
  • 因此设每回合产生的减免贡献为 Di=max⁡(0,Ai−k)D_i = \max(0, A_i – k),问题转化为在长度为 nn 的序列中找出长度为 mm 的连续子段,使其 DiD_i 之和最大。
  • 利用前缀和 pre[i]=pre[i−1]+Dipre[i] = pre[i-1] + D_i,可以实现 O(1)O(1) 计算任意区间 [i,i+m−1][i, i+m-1] 的减免量总和。
  • 遍历所有可能的区间起点,更新并记录最大的区间减免量 maxd\text{maxd}。
  • 最终的最小总伤害即为初始总伤害 ∑Ai\sum A_i 减去最大减免量 maxd\text{maxd}。

100pts

T3 Oblivion

难度一下子就从J组第二题跳到了NOIP第二题。。。

难度落差是真的大啊。。。

50pts

本题正解思路小总结:

  • 定义 f[i]f[i] 为以第 ii 个人作为左侧最近邪恶者的方案数,通过动态规划求解。
  • 预处理出 prelpre_l 和 nxtrnxt_r 数组,记录左侧最近的 L 和右侧最近的 R 位置。
  • 利用树状数组维护前缀和,通过位置 l=max⁡(2×prel[i−1]−i,1)l = \max(2 \times pre_l[i-1] – i, 1) 确定前驱状态集合范围。
  • 利用 r=2×nxtr[i+1]−ir = 2 \times nxt_r[i+1] – i 标记当前状态在何处失效,并用 deldel 数组延迟删除状态。
  • 若当前字符为 ?,则 f[i]f[i] 乘 22 表示该位置邪恶者可在 L 和 R 中任选其一。
  • 最终累加所有右侧无强制 R 约束的 f[i]f[i],并对 998244353998244353 取模即可得到答案。

订正

T4 No way back

暂无

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
Cover
加载中...
准备就绪