AHOI2022

P8338 [AHOI2022] 排列

  • 首先缩环,每个环有个数量, 对于有个点交换就是两个环合起来,然后求 lcm

  • 这里需要知道一个很简单但是很重要的结论:对于 ai=n ,不同的 ai 只会有 n 的数量级

  • 所以先去重一下,然后暴力枚举,那么就是 O(n) 的了

  • 那么现在就是要维护一个集合的 lcm ,支持删除添加

  • 考虑质因数分解,那么就是对于每个质数的幂次维护最大

  • 质因数的个数只有 O(log) 的,虽然我也不会证

  • 那么我们需要支持删除加入快速求最大值,因为只会删 2 个,所以考虑维护最大的 3 个幂次就可以了

P8339 [AHOI2022] 钥匙

  • 考虑一种不重不漏的贡献方式,假设钥匙是 +1 ,宝箱是 -1 ,对于 +1+1-1-1,我们使 (2,3)(1,4) 为两组贡献,可以发现这样子做后的贡献可以做到不重不漏

  • 考虑对于每种颜色建立虚树,对于每个钥匙节点在相应的虚树上 dfs ,dpy 表示到达这个节点时还剩的钥匙,那么如果还剩一把,那么自己和这个节点就可以算贡献了

  • 也就是对应 xy ,如果路径 uv 覆盖 xy ,那么贡献加一

  • 可以发现这样算的贡献确实是不重不漏

  • 对于路径覆盖问题,可以转换变成 dfn 在某个区间

  • 那么每个贡献可以看成一些矩形,每种路径看成二维平面的一个点,那么就是询问一个点能被多少个矩形覆盖了

  • 这个就可以将二维平面的信息全部离线下来,然后做

posted @   Kzos_017  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示