单调队列0分求助
查看原帖
单调队列0分求助
283416
_Extroversion楼主2022/10/6 11:36

rt,样例过了,但单调队列一直调不好

#include<iostream>
#include<cstdio>
#include<cstring>
#define N 4010
#define MOD 10000
using namespace std;
int n,k,a[N][N],q[N],m,t,maxx;
int f[N][N],u,w,v;
int main(){
	scanf("%d%d%d%d",&n,&m,&k,&t);
	for(int i=1;i<=k;i++){
		scanf("%d%d%d",&u,&v,&w);
		a[u][v]=w;
	}
	for(int i=1;i<=m;i++){
		f[1][i]=a[1][i];
	}
	for(int i=2;i<=n;i++){
		int h=1,t=0,r=0;
		for(int j=1;j<=m;j++){
			while(r<m&&r<j+t){
				r++;
				while(h<=t&&f[i-1][q[t]]<=f[i-1][r])t--;
				q[++t]=r;
			}
			while(h<=t&&q[h]<j-t)++h;
			f[i][j]=(h<=t?f[i-1][q[h]]:0)+a[i][j];
		}
	}
	for(int i=1;i<=m;i++){
		maxx=max(maxx,f[n][i]);
	}
	printf("%d",maxx);
	return 0;
}
2022/10/6 11:36
加载中...