首页 > 其他分享 >日志 12.24

日志 12.24

时间:2024-12-25 10:11:47浏览次数:4  
标签:满足条件 结点 僵尸 置换 交换 12.24 分裂 日志

DS 题,主题平衡树和可并堆。

T2 未知来源模拟赛题

题意简述:给一棵有根树,树上权值形成排列,对 \(i\in[1,n]\) 依次执行:选择子树内(包括 i 自己)的一个 j,并交换 \(a_i,a_j\)。问是否能在 n 次操作之后使 \(\forall i:a_i=i\),如有须构造方案。

容易注意到,有解的必要条件是每个置换环所有结点都在一条祖孙链上,因为转弯必须在 lca 或它上面的某处交换两次,手玩易知。

于是只判这个必要条件交上去,发现 PC 完了,这说明结论充分,只须对链上的情况给出构造即可。

唐完了。捏着正确的充要条件但是觉得不是对的,对一组手搓的 Hack 觉得无解,并暴搜写挂认为新结论正确,还拿去招摇撞骗。

考虑按顺序构造,如果当前点 u 是置换环里深度最大的点就不动他,否则找一个 v 跟他换,那么会换出来两个置换环,因为 u 之后不能再动了,所以一定要让 u 是新置换环的最深点。手玩得到,有且仅有一个 v 满足条件:u 沿置换环倒着找,第一个大于其深度的。

于是写棵平衡树维护这个东西,一次交换是把一个区间提出来并合并另外两段,找 v 直接两次树上二分。

提问:已知结点编号怎么把他分裂出来呢?答案是额外维护一个父亲,暴力上跳求 rank,然后按 sz 分裂。

维护父亲时的变化量:分裂合并两次连边带上父亲边;分裂时清空当前结点父亲。

今天调了一个小时的大饭:

树上二分:

若 右儿子满足条件:返回递归右儿子。

否则若 自己满足条件:返回自己。

否则:返回递归右儿子。

T1 P3274

噔 噔 咚

这个题思路真的很简单。考虑把每个僵尸拆点,表示成往上走和往下走,然后就能连边形成若干链。如果一只僵尸似了那么就交换对应两条链的后缀,这可以用平衡树实现。

然后一堆细节。待我做完再总结。

闲话部分

没有闲话。晚上被头痛肘回家了。我植物大战僵尸还没吃完。

标签:满足条件,结点,僵尸,置换,交换,12.24,分裂,日志
From: https://www.cnblogs.com/hagasei/p/18629625

相关文章

  • Diary - 2024.12.24
    今天摆完了有点。待补:Solution-LuoguP11398众数Solution-LuoguP11401[Code+#8初赛]普勒亚Solution-Codeforces2041KTrophicBalanceSpeciesLuoguP11408[RMI2020]树咖/Arboras代码想想LuoguP11417[Sloi2024]D1T1精卫的线性(?),而且还有代码整理一......
  • 2024.12.24 LGJ Round
    A有\(n\)个人,血量为\(a_i\),\(m\)次攻击,每次随机选一个血量不为\(0\)的人使其血量减\(1\),问期望使多少人血量归零。\(n\le15,a_i,m\le200\)。设\(dp_{i,s}\)表示前\(i\)次攻击\(s\)集合里的人已经死了,此时的贡献。转移的话,枚举一个在此时全部死掉的一个人,再把这......
  • 【Kibana01】企业级日志分析系统ELK之Kibana的安装与介绍
    Kibana图形显示Kibana介绍Kibana是一款开源的数据分析和可视化平台,它是ElasticStack成员之一,设计用于和Elasticsearch 协作,可以使用Kibana对Elasticsearch索引中的数据进行搜索、查看、交互操作,您可以很方便的利用图表、表格及地图对数据进行多元化的分析和......
  • 12.24随笔
    这里是12.24随笔题目留档:给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。示例1:输入:coins=[1,2,5],a......
  • 24.12.24
    好像用了快一天看了看这辈子也用不到的东西呢。感觉在场上不如直接暴力呢。插头dp轮廓线dp网格图状压dp的一种方式,即逐格dp。以我的脑子只会限制四联通下的轮廓线。限制跨了多行还是压整行逐行dp罢。轮廓线:已决策状态和未决策状态的分界线压的(应该)是已决策状态......
  • 启用Linux防火墙日志记录和分析功能
    防火墙的基本功能是阻止来自可疑网络/来源的连接。它会检查所有连接的源地址、目的地址和端口,并决定是否允许或阻止流量。防火墙的每个操作都会记录为日志数据。监控和分析这些日志对于保护您的网络免受攻击至关重要。要这样做,您需要首先启用日志功能。以下是在Linux防火墙中启用......
  • 12.24
    【已解决】JavaScript---items="${arraylist}"var="student"无法获取到值,null错误第一、bean层只写数据结构1、定义成员变量,私有的属性2、重写tostring方法3、写带全部参数的构造方法4、写无参构造方法5、写get、set方法注意#变量名和方法名的拼写错误,检查再三......
  • 12.24 CW 模拟赛 赛时记录
    前言考试期间,只需要考虑考试策略即可,别的都别管了先打暴力,想正解不超过\(40\\rm{min}\),最后拼高档/正解,冷静,认真分析看题现在看到不按难度排序已经免疫了,感觉是防锅专用语?\(\rm{T1}\)题意非常清楚,可能挖下性质还是可以做的\(\rm{T2}\)我不到啊,但......
  • 2024.12.24 强行打扰,结果是永远的失去
    因为关系的断裂,你断崖式断联了我,我崩溃了,开始疯狂的发信息解释,电话,邮件,短信,给你的地址寄送东西,一天可以收十几个快递,最熟悉的人,被突然的删除,拉黑,我疯了,你的电话不能换,地址不能换,邮件不能换从11月份到12月,难过的只有我,疯狂的怀念过去的美好,也许那是虚幻,但我坠落下去了,清醒的沉......
  • Zed调试宏 C语言错误日志 异常错误调试信息
    1、C中的错误码           在C语言中通过返回错误码或设置全局的errno值来反馈错误问题。errno.h是一个头文件,它定义了一个全局变量errno,用于在程序中记录和报告错误的原因。这个机制主要用于处理系统调用或标准库函数出错时的错误反馈。当系统调用或库函数遇到......