被邪恶的数据做局了
查看原帖
被邪恶的数据做局了
917775
_buzhidao_楼主2025/6/23 21:06

rt。record

单调队列优化前 40pts+TLE,优化后30pts+WA。

#include<bits/stdc++.h>
using namespace std;

int n,m,k,t;
int val[4005][4005];

int dp[4005][4005];
int ans=-1e9;

//Subtask#1 n<=200
//Subtask#2 n<=4000

deque<int> q;

void update(int i,int j,int l){
	while(q.size()&&q.front()<=j-l) q.pop_front();
	while(q.size()&&dp[i][q.back()]<=dp[i][j]) q.pop_back();
	q.push_back(j);
}

int main(){
	ios::sync_with_stdio(0);
	
	cin>>n>>m>>k>>t;
	
	int x,y,v;
	for(int i=1;i<=k;++i){
		cin>>x>>y>>v;
		val[x][y]=v;
	}
	
	for(int i=1;i<=n;++i){
		q.clear();
		for(int j=1;j<=t;++j) update(i-1,j,2*t+1);
		for(int j=1;j<=m;++j){
			if(j+t<=m) update(i-1,j+t,2*t+1);
			dp[i][j]=dp[i-1][q.front()]+val[i][j];
			if(i==n) ans=max(ans,dp[i][j]);
		}
	}
	
	cout<<ans<<endl;
	
	return 0;
}
2025/6/23 21:06
加载中...