CF811C Vladik and Memorable Trip
2024-09-30 19:29:28
思路:
令dp[i]表示前i个的最大舒适度。则如果区间[j, i](1 < j <= i)满足条件,有如下转移:dp[i] = max(dp[i], dp[j - 1] + cur)。其中,cur为区间[j, i]的舒适度。
实现:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int MAXN = ;
int n, a[MAXN], l[MAXN], r[MAXN], vis[MAXN], dp[MAXN]; int main()
{
cin >> n;
for (int i = ; i <= n; i++)
cin >> a[i];
for (int i = ; i <= n; i++)
{
if (!l[a[i]]) l[a[i]] = i;
r[a[i]] = i;
}
for (int i = ; i <= n; i++)
{
dp[i] = dp[i - ];
int cur = ;
memset(vis, , sizeof(vis));
int minL = l[a[i]];
for (int j = i; j >= ; j--)
{
if (r[a[j]] > i) break;
if (!vis[a[j]]) vis[a[j]] = , cur ^= a[j];
minL = min(minL, l[a[j]]);
if (minL >= j) dp[i] = max(dp[i], dp[j - ] + cur);
}
}
cout << dp[n] << endl;
return ;
}
最新文章
- WCF 安全性之 自定义用户名密码验证
- Scrapy--1安装和运行
- 多元线性回归 &mdash;&mdash;模型、估计、检验与预测
- Git / 程序员需要知道的12个Git高级命令
- oracle pl sql 解锁表
- VS生成事件
- bzoj4709 [jsoi2011]柠檬
- docker-py的配置与使用
- c++中运算符重载,+,-,--,+=,-=,*,/,*=,/=,
- PHP basename() 函数
- 介绍三个Android支持库控件:TabLayout+ViewPager+RecyclerView
- QT的安装及环境配置
- 关于Docker开通远程访问端口2375
- 检查SQL Server被哪个进程占用,且杀进程。
- Sublime Text 3安装Package Control快速建立html5和xhtml文档
- C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用
- 11.2.0.4rac service_name参数修改
- Solr中的日期/时间表示
- django项目分页
- Zipper(动态规划)