问题转化
题目要求最终序列的每个元素必须属于集合 Y,且整体序列非递减。为了处理允许值的限制,我们先对集合 Y 进行排序,得到有序序列 b1≤b2≤⋯≤bm。这样,最终序列中每个元素必然落在某个 bj 上。
动态规划定义
定义 dp[i][j] 表示考虑前 i 个元素,且将第 i 个元素修改为 bj 时,满足前 i 个元素均取自 Y 且非递减的最小操作次数。
状态转移
给定一个长度为 n 的整数序列 x1,x2,…,xn 和一个长度为 m 的允许值集合 Y={y1,y2,…,ym}。每次操作可以选择序列中的一个元素 xi,将其加 1 或减 1。你需要经过若干次操作,使得最终序列满足以下两个条件:
序列的长度 n 和集合的大小 m 均不超过 2000。所有整数均为正整数且不超过 10^9。
第一行包含两个整数 n 和 m,分别表示序列长度和允许值集合的大小。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.