#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;没办法想的太多了,忘记是连续的数列 我们枚 ...
随机推荐
- Html 经典布局(三)
经典布局案例(三): <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- SQL零星技术点:SQL中转换money类型数值转换为字符串问题
--SQL中转换money类型数值转换为字符串问题,直接转换就转为两位了,所以需要做一下处理.具体请看下述sql实例. 1 create table #test(price money) insert ...
- 简单的利用JS来判断页面是在手机端还是在PC端打开的方法
在移动设备应用越来越广泛的今天,许多网站都开始做移动端的界面展示,两者屏幕尺寸差异很大,所以展示的内容也有所差别.于是就遇到一个问题,如何判断你的页面是在移动端还是在PC端打开的,很简单的问题,那我们 ...
- 动画制作 手机APP制作以及响应式的实现
babber 宽度:浏览器的100% 原则上:高度-=图片高度 banner img 宽度:图片的实际宽度 高度:充满父容器 使用定位:让图片在父容器中绝对居中. <!DOCTYPE h ...
- FrameBuffer系列 之 一点资源
Iamonlyme的FrameBuffer编程实例http://download.csdn.net/detail/iamonlyme/6512955 light588的通过framebuffer直接写 ...
- 关于制作C语言头文件的思考
我们接触的第一个c语言代码是这个: #include<stdio.h> main() { printf("Hello World"); } 这是最简单的c代码,然而,它 ...
- PDO(数据访问抽象层)、pdo事务功能和预处理功能---2017-05-05
之前所学的数据访问都是用mysqli做成类来访问的,但是mysqli这个类只是针对mysql这个数据库的:那么如果访问其他类型的数据库呢? 那么这就用到了PDO(数据访问抽象层). 一.关于PDO基本 ...
- python中的一些小知识
在最近学习python中遇到的一些小问题汇总一下: 1.在windows7下安装python3.5版本时提示安装不了,缺少ServicePack1. 解决办法是,打开控制面板\系统和安全\Windo ...
- GitHub 常用命令使用介绍(新同学入门)
经济在不断发展,社会在不断进步,以往的互联网在现在看来都可以称为传统互联网了,因为技术不断的在突破和革新. 本文主要介绍一下版本管理工具,我猜测很多人还是用SVN.CVS或者Resion,但是,今天我 ...
- JavaScript ,Python,java,Go系列算法之选择排序
常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等. 用一张图概括: 选择排序 选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n2) ...