不知道为什么错了QWQ,求大佬康康
查看原帖
不知道为什么错了QWQ,求大佬康康
123078
C_Z_C楼主2021/11/11 14:22

代码如下:

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

inline int read(){
	int s = 0;
	char c = getchar();
	while(c > '9' || c < '0') c = getchar();
	while(c >= '0' && c <= '9') s = s * 10 + c - '0', c = getchar();
	return s;
}

vector<int> q[305], qq[305];
int n = read(), m = read(), w[45000], l[45000], r[45000];
long long dp[305][305];

int main(){
	for(int i = 1; i <= m; i++)
		w[i] = read(), l[i] = read(), r[i] = read(),
		q[l[i]].push_back(i), qq[r[i]].push_back(i);
	for(int i = 1; i <= n; i++){
		for(int j = 1; j + i - 1 <= n; j++){
			int y = j + i - 1;
			dp[j][y] = max(dp[j + 1][y], dp[j][y - 1]);
			for(auto k : q[j])
				if(r[k] <= y) dp[j][y] = max(dp[j][y], dp[j + 1][y] + w[k]);
			for(auto k : qq[y])
				if(l[k] >= j) dp[j][y] = max(dp[j][y], dp[j][y - 1] + w[k]);
		}
	}
	cout << dp[1][n];
	return 0;
}
2021/11/11 14:22
加载中...