agc027 题解
A
排序。
B
挺困难的。
考虑 的贡献,只和扔垃圾次数有关,也就是需要看出去的次数。
然后考虑如果拿若干个垃圾,肯定是先走到最右边,然后回来的路上拿。
因此给每个点一个值,表示它是在自己那一趟里第几个被拿的。
容易发现每个值对应一个贡献,这个贡献需要乘上它所在位置,并且值越大贡献越大。
贪心,把小的值分配给后面的,然后没了。
C
相当于要拿出一个闭合子图,要求每个点都可以到达 AB
。
拓扑排序,每次把不合法的点删掉。
D
一开始有个直接的想法就是黑白染色,然后每个黑点给一个奇素数,然后白点的值是周围一圈的乘积加一,这样满足一定不会重复而且合法。
但是爆炸,白点上的数太大了。
然后发现不会做。。。
正解是,每个黑点上的数是两个素数的乘积,然后黑点的数是周围一圈 ,然后一条主副斜线各给一个素数,这样就满足条件了。
E
首先一步简单的转化是, 看成 , 看成 ,那么合并就是加起来 。
首先发现,如果一个序列是 abababab...
,那么显然操作不了。
否则证明,这个序列如果 ,那么可以操作成一个字符。
归纳,就是如果有几个相邻相同的,一定存在一个使得操作之后还有相邻相同的。
然后我们把序列分成若干段,然后每一段都满足 ,对应一种方案。
贪心,一定是每次选一个最小的前缀。
但是最后可能会多出来一段和为 的。
调整,最后一段先和前面一段合并,然后如果操作不了,说明一定是 ababa
这样的,那么把最后一个扣出,然后前面的再和前面的合并,直到合并到一个可以操作的即可。
F
一步操作之后,就可以确定一个不动的根,把关系列出来拓扑排序即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】