合唱队形(基础dp,最长上升子序列)

合唱队形(基础dp,最长上升子序列)_第1张图片
这道题我感觉以前好像我遇见过,嘻嘻;这个可以直接求以这个数的左右两边的最长上升子序列中元素的个数,然后用n-(个数-1),每次取最小值就行了;
对于最长子序列的dp定义:dp[i]=max(dp[i],dp[j]+1);其中dp[i]初始化都为1,因为自己本身就算一个;然后j是0 AC代码:

#include
using namespace std;
typedef long long ll;
	int n,a[200],b[200];
	int dp1[200],dp2[200];
void Fun1(){//求a的dp
	for(int i=0;i

你可能感兴趣的:(dp)