#416 Div2 C
#416 Div2 C
题意
一些人去坐车,它们已经按给定顺序排队,每个人可能去不同的目的地,去同一目的地的人一定要被分成一组(去不同目的地的也可被分到同一组),对分好的每一组所有不同的目的地序号作异或,并求和,求使得结果最大。(不要求每个人都要分组,不能改变人的顺序,在同一组的人序号必须连续)
分析
首先预处理找到以每个人为左端可以产生的分组(显然有些人不能作为左端,如果可以,那么一定是唯一确定的分组),然后记忆化搜索一下即可。
code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 5e3 + 10;
int a[MAXN];
int b[MAXN];
int bl[MAXN], br[MAXN];
int xora[MAXN];
int n;
int dp[MAXN];
void dfs(int x, int res) {
if(res <= dp[x]) return;
else dp[x] = res;
if(x >= n) return;
if(x == bl[a[x]]) dfs(br[a[x]] + 1, res + xora[bl[a[x]]]);
dfs(x + 1, res);
}
int main() {
cin >> n;
memset(dp, -1, sizeof dp);
for(int i = 0; i < n; i++) {
scanf("%d", &a[i]);
if(!b[a[i]]) bl[a[i]] = i;
b[a[i]]++;
br[a[i]] = i;
}
for(int i = 0; i < 5001; i++) {
set<int> s;
if(!b[i]) continue;
for(int j = bl[i]; j <= br[i]; j++) {
br[i] = max(br[i], br[a[j]]);
if(bl[a[j]] < bl[i]) {
bl[i] = bl[a[j]];
}
}
if(a[bl[i]] != i) continue;
for(int j = bl[i]; j <= br[i]; j++) {
if(!s.count(a[j])) {
s.insert(a[j]);
xora[bl[i]] ^= a[j];
}
}
}
dfs(0, 0);
cout << dp[n] << endl;
return 0;
}
#416 Div2 C的更多相关文章
- codeforces round 416 div2 补题 CF 811 A B C D E
A. Vladik and Courtesy 水题略过 #include<cstdio> #include<cstdlib> #include<cmath> usi ...
- codeforces round #416 div2
A:暴力模拟 #include<bits/stdc++.h> using namespace std; int a, b; int main() { scanf("%d%d&qu ...
- bc#54 div2
用小号做的div2 A:竟然看错了排序顺序...白白WA了两发 注意读入一整行(包括空格):getline(cin,st) [gets也是资瓷的 #include<iostream> us ...
- $('div a') 与$('div>a'),.div+.div2与.div~.div2
$('div a'):div标签下所有层次a元素的jquery对象 $('div>a'):div标签下子元素层次a元素的jquery对象 <body> <div class=' ...
- HTTP状态码206和416
HTTP 2xx范围内的状态码表明了:"客户端发送的请求已经被服务器接受并且被成功处理了". TTP/1.1 200 OK是HTTP请求成功后的标准响应 HTTP/1.1 206状 ...
- SRM 657 DIV2
-------一直想打SRM,但是感觉Topcoder用起来太麻烦了.题目还是英文,不过没什么事干还是来打一打好了.但是刚注册的号只能打DIV2,反正我这么弱也只适合DIV2了.. T1: 题目大意: ...
- CodeForces Round 192 Div2
This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...
- Codeforce Round #211 Div2
真的是b到不行啊! 尼玛C题一个这么简单的题目没出 aabbccddee 正确的是aabccdee 我的是 aabcdee 硬是TM的不够用,想半天还以为自己的是对的... A:题... B:题. ...
- Topcoder srm 632 div2
脑洞太大,简单东西就是想复杂,活该一直DIV2; A:水,基本判断A[I]<=A[I-1],ANS++; B:不知道别人怎么做的,我的是100*N*N;没办法想的太多了,忘记是连续的数列 我们枚 ...
随机推荐
- Apriori算法(C#)
AprioriMethod.cs using System; using System.Collections.Generic; using System.Linq; using System.Web ...
- 基于R树索引的点面关系判断以及效率优化统计
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在之前的博客中,我分别介绍了基于网格的空间索引(http:// ...
- rapidPHP 下载并安装
安装 rapidPHP对运行环境的要求 php 5.4以上,包括5.4,支持php7,依赖包,php-curl,php-mysql,php-gd 官网下载 http://rapidphp.gx521. ...
- linux下编译安装nginx
1.首先下载稳定版nginx1.10.2 使用wget命令下载 wget http://nginx.org/download/nginx-1.10.2.tar.gz 2.然后解压 tar -zxvf ...
- Javascript使用克隆的原型模式
ECMAScript 5中提供了Object.create()方法. 使用这个方法很容易克隆一个一模一样的对象. var animal=function(){ this.blood=100; this ...
- jade模板引擎简明用法
①.特性 首个单词为标签,有一些不能识别的标签可作为code,如each for case if else if unless zen coding风格添加标签,如 .nb#hello 生成 & ...
- kafka java使用
首先添加maven依赖 Kafka <dependency> <groupId>org.apache.kafka</groupId> <artifactId& ...
- 我的Cocos2dx开发模式
编程环境: 1.window 7 32bit 2.cocos2dx 3.0 3.python 2.7 (注意不要使用3.0以上版本,除非cocos2dx推荐使用) 4.apache-ant-1.9.3 ...
- openresty源码剖析——lua代码的执行
上一篇文章中我们讨论了openresty是如何加载lua代码的 那么加载完成之后的lua代码又是如何执行的呢 ##代码的执行 在init_by_lua等阶段 openresty是在主协程中通过lu ...
- call,apply和bind,其实很简单
call和apply call和aplly作用完全一样,都是在特定的上下文中调用函数,或者说改变函数内部的this指向:区别仅在于接收参数的方式不同. var dog = { name: " ...