首页 > 其他分享 >动态规划题解报告

动态规划题解报告

时间:2024-11-02 16:09:06浏览次数:4  
标签:动态 题解 sum 离散 le 考虑 矩形 规划 binom

[APIO2016] 划艇

注意到 \(n\le 500\) 考虑 \(O(n^3)\) 的做法。

值域小的做法比较显然,值域比较大,考虑离散化( 将 \(b_i+1\) 然后限制变为 \([a_i,b_i+1)\) )。

设 \(f_{i,j}\) 表示考虑前 \(i\) 个,\(i\) 选择 \(j\) 的方案数。

发现由于离散化了很难转移 \(f_{k,j}\ (k<i)\) 的情况,但由于单调性,只要前面选择了第 \(j\) 块后面都只能选择第 \(j\) 块,前面的直接乘上小于 \(j\) 的方案和就好的,那么问题转移到求解一个矩形内的子问题,并且这个矩形宽是 \(O(n)\) 级别,长是 \(O(v)\) 级别的。

考虑如何快速求解这个子问题

先考虑 DP 去做,则 DP 定义同上( 只不过是没有离散化的 )

设 \(s_{i,j}=\sum_{x\le i,y\le j}f_{x,y}\),则有转移 \(f_{i,j}=1+s_{i-1,j-1}\)。

这个 \(s\) 数组有些烦人,考虑去掉,注意到 \(f\) 数组本质上就是一个前缀和的形式
考虑二维前缀和容斥,则有 \(f_{i,j}=(f_{i-1,j}-1)+(f_{i,j-1}-1)-(f_{i-1,j-1}-1)+f_{i-1,j-1}+1\)

上式化简得 \(f_{i,j}=f_{i-1,j}+f_{i,j-1}\),其中 \(f_{1,1}=1\)。

是否觉得这个东西有些熟悉?

竟然是矩形路径数!

那么我们就能得到 \(f\) 数组的封闭形式,即 \(f_{i,j}=\binom{i+j-2}{i-1}\),能 \(O(n)\) 求解。

设这个矩形的宽为 \(i\),长为 \(v\),则这个子问题的答案则为 \(\sum_{j=1}^{v}f_{i,j}=\sum_{j=1}^v\binom{i+j-2}{i-1}=\binom{i+v-1}{i}\)。

那么我们就能 \(O(n)\) 求解这个子问题,并且因为转移得遍历前继所有包含 \(j\) 这一块的所以能倒序递推,这样复杂度就是对的了,但由于子问题的答案起始点是不定的,所以得简单容斥去重。

复杂度为 \(O(n^3)\)。

标签:动态,题解,sum,离散,le,考虑,矩形,规划,binom
From: https://www.cnblogs.com/07Qyun/p/18521988

相关文章

  • 编辑距离 | 动态规划
    设A和B是两个字符串,求将字符串A转换为字符串B的最少操作次数。字符操作共有如下三种:     (1)删除一个字符。     (2)插入一个字符。     (3)将一个字符改为另一个字符。 如A=“kitten”、B=“sitting“,求编辑距离。#include<iostream>#include<cstdio......
  • 动态规划 —— 路径问题-地下城游戏
    1. 地下城游戏题目链接:174.地下城游戏-力扣(LeetCode)https://leetcode.cn/problems/dungeon-game/description/ 2. 算法原理 状态表示:以莫一个位置位置为结尾或者以莫一个位置为起点  dp[i,j]表示:到达[i,j]位置的时候,骑士所需要的最低初始健康点数(X),这个状......
  • 关于Copilot出现:You don`t have access to Github Copilot .....的问题解决方案
    前面如何如何配置,以及如何如何上传学生证资料等我这里不赘述badendinghappyending出现这个界面这个问题就是set_up不是很完全,设置一下就行disable改为enable等这样再回去IDE,就可以正常使用了......
  • 牛客周赛 Round 65 题解
    牛客周赛Round65牛客周赛Round65A-超市_牛客周赛Round65#include<bits/stdc++.h>#defineendl'\n'usingnamespacestd;voidsolve(){ intn,a,b;cin>>n>>a>>b; intans=0; for(inti=0;i<=100;i++){ for(intj=0;j<=100;j++){......
  • 【WCH蓝牙系列芯片】-基于CH582开发板—动态更新蓝牙广播间隔
    ------------------------------------------------------------------------------------------------------------------------------------在使用蓝牙从机的时候,从机与主机设备在建立之前一直是出于广播数据状态,在从机中广播包含有广播数据和扫描回复数据,这两个内容的总长......
  • P3780 苹果树 题解
    传送门夏天近了,又到了恋爱的季节,小Q家门前的苹果树上结满了红红圆圆的苹果。这株苹果树是一个有着\(n\)个结点的有根树,其中结点被依次编号为\(1\)至\(n\)。\(1\)号结点为根,其余每一个结点的父结点一定是某个编号较小的结点。每一个结点上都有一些苹果,第\(i\)个结点上有\(a_i(a_......
  • 【轰炸题解】
    轰炸题目描述“我该怎么办?”飞行员klux向你求助。事实上,klux面对的是一个很简单的问题,但是他实在太菜了。klux要想轰炸某个区域内的一些地方,它们是位于平面上的一些点,但是(显然地)klux遇到了抵抗,所以klux只能飞一次,而且由于飞机比较破,一点起飞就只能沿直线飞行,无法......
  • Codeforces Round 983 div2 个人题解(A~D)
    CodeforcesRound983div2个人题解(A~D)Dashboard-CodeforcesRound983(Div.2)-Codeforces火车头#define_CRT_SECURE_NO_WARNINGS1#include<algorithm>#include<array>#include<bitset>#include<cassert>#include<cmath>#in......
  • SP30785 ADAAPPLE - Ada and Apple 题解
    洛谷题目传送门博客园可能食用更佳题目大意:给定一棵权值为\(0\)或\(1\)的树,\(n\)个点,\(q\)次操作:0i把结点\(i\)的权值取反;1ij询问点\(i\)到点\(j\)的最短路径上权值是否全为\(0\)或全为\(1\)。题目分析:树上操作,看了下操作发现是树剖板子题。开......