没听说过二维dp前根本想不出来啊!!!!
下面附上老师结合本题对二维dp讲解:
通常而言,如果用1个整数状态的方程 写不出来,就用2个整数,也就是升维
•2个写不出来,就用3个,以此类推
•但是升维会严重消耗时空,通常需要 结合数据范围来进行判定:
•到底是应该升维还是需要寻找更巧妙 的状态表示与规划目标
•在接馅饼这道题中,馅饼的数量显然 与位置也有关
•因此这道题的状态要用2个数表示,目 标记作Dtx,Dtx表示在t时刻、x位置能 够接到的最大数量
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define MAXN 100010
using namespace std;
int dp[MAXN][12],pile[MAXN][12];
///全局变量和静态变量的存储区域是在一起的,程序结束后由系统释放。数据区的大小由系统限定,一般很大。
int max_is(int a,int b,int c);
int main(){
int n,x,t