POI 2022 Stage I

Kolorowy wąż (kol)

用栈从蛇尾到蛇头记录每一段身体的颜色,每次蛇头变化都认为是新长出了一个蛇头。

对于每个坐标,记录它最后一次是被哪个蛇头经过的,那么根据蛇头版本的差值可以得到对应蛇身相对于蛇头的名次,然后即可在栈中找到对应的颜色。

每次操作的时间复杂度为O(1)

 

Płytkie nawiasowania (ply)

将 '(' 视为1,')' 视为1,那么需要满足前缀和介于[0,k],且总和为0

从左往右模拟,一旦在当前位置发现前缀和不在[0,k],就反转当前的括号,一定可以保证代价最小。

时间复杂度O(n)

  

Pociąg towarowy (poc)

找到pre[i]表示从左往右贪心匹配出b[i]的位置,以及suf[i]表示从右往左贪心匹配出b[i]的位置。

那么[pre[i],suf[i]]中所有值为b[i]的位置都可能被匹配,对于b[i]这个值出现的所有下标通过差分前缀和打标记即可。

时间复杂度O(n+m)

  

Wyprzedzanie (wyp)

相邻两辆车一旦紧靠在一起,它们将永远紧靠在一起,可以合并为一辆车。

提取相邻两辆车合并为一个整体的时间点,然后按时间顺序模拟即可,使用链表+堆维护。

实现的时候,需要使用全整数分数类以避免精度误差。

时间复杂度O(nlogn)

  

Zboże (zbo)

动态点分治。时间复杂度O(nlogn)

  

posted @   Claris  阅读(108)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2017-10-30 XVIII Open Cup named after E.V. Pankratiev. Grand Prix of SPb
2016-10-30 HDU5942 : Just a Math Problem
点击右上角即可分享
微信分享提示