社区讨论

求调

P11233[CSP-S 2024] 染色参与者 4已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@m2q96bye
此快照首次捕获于
2024/10/26 22:25
去年
此快照最后确认于
2025/11/04 15:59
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;

const int maxn = 1e6 + 10;
int dp[maxn],a[maxn],b[maxn];
int n;
int maxx[maxn];

signed main()
{
	int T;cin >> T;
	while(T--)
	{
		memset(dp,-63,sizeof(dp));dp[0] = 0;
		memset(maxx,-63,sizeof(maxx));
		cin >> n;
		for(int i = 1;i <= n;i++)cin >> a[i],b[i] = b[i - 1] + a[i] * (a[i] == a[i - 1]);
		for(int i = 1;i <= n;i++)
		{
			dp[i] = max(maxx[a[i]] + a[i] + b[i - 1],dp[i - 1]);
			maxx[a[i - 1]] = max(dp[i] - b[i - 1],maxx[a[i - 1]]);
		}
		cout << dp[n] << '\n';
	}
	return 0;
}
就是定义 dpidp_i 为前 ii 个数的答案

回复

4 条回复,欢迎继续交流。

正在加载回复...