【题解】ARC157 A-D
因为有的题代码没写出来,所以代码就先咕咕咕了。
A.XXYYX
题目分析:
可以发现每一个 XY
必然伴随着出现一次 YX
,当然可能会有一个 XY
没有伴随的 YX
的。
而且若必须存在 XX
和 YY
而不存在 XY
或 YX
的则无解。
所以就根据上述的两个条件判一下就好了。
B.XYYYX
题目分析:
我们设字符串中 的数量为 ,则若 ,最优一定是全部把 变成 之后然后再删除 ,否则最优一定是只是将 变成 。
考虑分类讨论。
若 :那么我们最优的删除 的办法肯定是每次删除一段最长的 ,因为每当我们删除一段的时候,第一个删除的数造成 的代价以后的数造成 的代价,所以要尽可能少出现 的代价。
若 :那么我们的最优的添加一定是每次添加一段最短的 ,因为每次添加完一段 ,最后一个添加的会造成 的贡献。
C.YY Square
题目分析:
显然需要将平方的代价化简一下,假设某一条路径有 对连续的 y
,那么多了一个 后贡献就是 。
考虑如果所有的路径放在一起维护, 就是原来的答案, 就是路径长度的和, 就是路径条数。
所以只要维护好了这些信息就可以轻松地做到多一个 的贡献,当然如果是没了 贡献就更简单了,就是 。
那么就直接 一遍这个网格图,然后维护一下就好了。
D.YY Garden
题目分析:
(典型的看了题解就会,自己做就是不会)
这个题其实就是几个关键的性质,下面假设 为用了多少行栅栏, 为用了多少列栅栏。
性质一: 若 Y
的数量为 ,当 为奇数时无解,当 为偶数时块数一定为
性质二: 若一种划分方式是合法的,则任意两行栅栏中间的 Y
的数量为 且任意两列栅栏中间的 Y
的数量为
性质三:
这三条性质也都很简单,所以应该不需要证明。
可以发现上面这三条性质很强,可以将答案限制在一个很小的范围里,而且对于求可能的划分方案也是很方便的,所以只需要求出可能的划分方式然后暴力判一下就可以了。
具体也就是直接去枚举 ,然后根据性质二就可以得到用了多少列,然后判断一下是不是等于 就好了,最后如果都符合再去暴力判断这个方案是否是真的合法。
时间复杂度是一个低于 的值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律