闲话8.13

今天上午打了一场模拟赛,被一群邢紫藤暴打了🤣🤣🤣

上来 T1 想了半个小时想到个做法,写了十几分钟发现假了。又想了个做法,写写写然后过了大样例,然后每 5 分钟就能拍出来一个错,大样例我谢谢你😊😊😊。T2 感觉是排列组合,写了个大 dp 跑了,考完发现 WA 了,但是不知道 WA 哪了。T3 看着不太可做,跳了。T4 完全不可做,跳了。

最终得分:92+0+0+0=92pts

wangk 的奇妙数据:

属于是逆天,n20 的数据能 TLE 是吧。

下午终于能回二北机房写题了,舒服。晚上让 Zkl21 点的炸鸡,ytq 要求点一份火鸡面,最后把他辣的🤪🤪🤪

晚上建议直接把 pdqb 枪决。

今晚见证 ezOIer 和管理对线:https://lglg.top/659513


推歌:CHAOS -Æsir

虽然我不玩 cy2,但是这首歌联动到 Arc 的时候第一时间去听了听,感觉意外的好听。而且也久仰 CHAOS 大名。

ARC 侧铺面不评价


模拟赛T1

感觉比lbx 的做法好理解一些。

首先我们考虑一个合法括号序列的产生条件:和未匹配的括号产生、和前面合法的括号序列产生。我们将两种贡献分开考虑。

第一种贡献十分好计算,我们可以直接维护一个当前未匹配左括号数量,加入右括号的时候计算即可。

我们设 exti 为第 i 次添加括号后最右端向左能扩展出多少段合法括号序列。拿下面这个图来说:

这个玩意用上面的方法就不太好维护了,就比如图中的 ext4,这里就和前面的括号牵扯上了,因此我们需要维护当前最后匹配上的括号,这提醒着我们可以用栈来维护这个过程。

具体的说,我们栈中存放加入这个括号的时间和当前剩余的括号数(只有左括号),加入右括号时弹栈计算第一类贡献,同时利用 exti 来计算被弹出这些节点的第二类贡献。

而当弹到栈空或者当前右括号匹配完后,我们就可以进行一个大分类讨论,分四种情况讨论并且维护 exti 即可。这里就不再展开。

应 lbx 要求,这里把分类讨论的部分写出来:

  1. 栈空,右括号未匹配完

这时直接把 ext 设为 0 即可,后面也不会和前面的形成新合法序列。

  1. 栈空,右括号匹配完

这时恰好和上次匹配的左括号形成一个完整的合法括号序列。记上次匹配的左括号是在第 j 次加入的,那么 exti=extj1+1(这里 j1 是因为我们的 ext 都是保存在右括号上的)

  1. 栈不空,右括号匹配完。

这时左括号有剩余,但是如果我们先把已经匹配的左括号看成没有,那么情况转化为第二种,就相同了。

  1. 栈不空,右括号未匹配完

这意味着有节点的左括号剩余超过了右括号,那么我们先让右括号和这些左括号匹配,这时右括号和这些左括号共同构成了一个大的括号序列,因此 exti=1

最终复杂度 O(n)


今晚没有 fumo 图。

posted @   crimson000  阅读(70)  评论(14编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示