又一届SIF开始了,悸动战士高咲侑终于摆脱了严防死守的步女士,又可以开始DD了! 在SIF中,一共有n个位置可以观赏学园偶像的表演,有m场演出可供观看。 第i场演出演出时间为t[i],演出位置为a[i],获取最大的悸动值为b[i],如果在位置x观看演出,则会获得b[i]-|a[i]-x|的悸动值(可以为负)。 侑每个单位时间能移动不大于d单位的距离,同时不能走到这n个位置以外,初始可以在任意位置。 她想知道能获取最大的悸动值是多少,你能帮帮她吗?用动态规划+滑动窗口,c++实现 输入格式 第一行三个整数n,m,d,如题目所述。 接下来m行,每行三个整数a[i],b[i],t[i],如题目所述。 输出格式 一个整数,表示获取的最大悸动值。
时间: 2024-04-22 13:23:30 浏览: 109
单片机与DSP中的瑞萨 VIF/SIF信号处理IC
好的,这是一道动态规划+滑动窗口的题目,我先给出思路:
1. 根据题目要求,我们需要求出可以观看的所有演出的位置区间,即对于每个演出i,都需要求出一个左右端点l[i]和r[i],表示在这个区间内观看演出i可以获得悸动值。
2. 然后,我们可以开一个dp数组,dp[i]表示在第i个位置观看演出可以获得的最大悸动值。
3. 我们可以使用滑动窗口的思想,从左到右依次遍历每个位置,对于当前的位置i,我们可以枚举前面的所有位置j,如果可以在j位置观看某个演出,那么我们可以在j位置观看演出并记录此时的最大悸动值,然后更新dp[i]。
4. 最后dp数组中的最大值即为所求。
下面是具体的C++代码实现:
阅读全文