Processing math: 100%

ABC221G Jumping sequence 题解

题面

题意简述:

给定一个长度为 n 的序列 D对于每一个 i 可以选择向一个方向走长度为 Di,问是否能走到 (A,B)

Data Range:1n2000,1Di1800,|A|,|B|3.6×106

首先把曼哈顿距离转化为切比雪夫距离 (A,B)(A+B,AB)。这样我们就将 xy 两维独立了。

对于操作,可以转化成如下形式:

  • up:(0,d)(d,d)
  • down:(0,d)(d,d)
  • left:(d,0)(d,d)
  • right:(d,0)(d,d)

因此,问题就转化成:

给定 n 个正整数 Di,确定一组 {Ci} 使得 Ci×Di=s,其中 Ci{1,1}

假设 Ci=1 的数的和为 aCi=1 的数的和为 b,所有数的和为 sum,那么就有:

ab=sb=asb=sumbs2b=sums

先把 sums 为奇数的情况判掉,然后跑一遍 bitset 优化 01 背包即可。

代码:

启发:

  • 看到曼哈顿距离,马上考虑转成切比雪夫距离,这样可以将两维问题独立。
  • 要有一定的推式子能力。
posted @   csxsi  阅读(70)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
阅读排行:
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 本地部署 DeepSeek:小白也能轻松搞定!
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)
历史上的今天:
2019-11-04 动态规划专题练习
点击右上角即可分享
微信分享提示