求调
查看原帖
求调
1764239
ett6df11111楼主2025/6/14 16:47
#include <bits/stdc++.h>
using namespace std;
#define l(x) ((x)&-(x))
int a[11111],dp[11111][555],t[555][5555],n,k;
void as(int x,int y,int d){
	for(;x<=k+1;x+=l(x)){
		for(;y<=5500;y+=l(y))t[x][y]=max(d,t[x][y]);
	}
}
int q(int x,int y){
	int ans=0;
	for(;x>=1;x-=l(x)){
		for(;y>=1;y-=l(y))ans=max(ans,t[x][y]);
	}
	return ans;
}
signed main() {
    cin>>n>>k;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++){
    	for(int j=k;j>=0;j--)dp[i][j]=q(j+1,a[i]+j)+1,as(j+1,a[i]+j,dp[i][j]);
	}
	cout<<q(k+1,5500);
    return 0;
}

样例过不去

2025/6/14 16:47
加载中...