链接:https://ac.nowcoder.com/acm/contest/317/C
来源:牛客网

小a正在玩一款星际探索游戏,小a需要驾驶着飞船从11号星球出发前往nn号星球。其中每个星球有一个能量指数pp。星球ii能到达星球jj当且仅当pi>pjpi>pj。
同时小a的飞船还有一个耐久度tt,初始时为11号点的能量指数,若小a前往星球jj,那么飞船的耐久度会变为t⊕pjt⊕pj(即tt异或pjpj,关于其定义请自行百度)
小a想知道到达nn号星球时耐久度最大为多少

注意:对于每个位置来说,从它出发可以到达的位置仅与两者的pp有关,与下标无关

输入描述:

第一行一个整数nn,表示星球数
接下来一行有nn个整数,第ii个整数表示pipi

输出描述:

一个整数表示到达nn号星球时最大的耐久度
若不能到达nn号星球或到达时的最大耐久度为00则输出−1−1
示例1

输入

复制

3
457 456 23

输出

复制

478

说明

小a有两种方法到达33号星球
第一种:1→2→31→2→3,最终耐久度为457⊕456⊕23=22457⊕456⊕23=22
第二种:1→31→3,最终耐久度为457⊕23=478457⊕23=478
示例2

输入

复制

4
2 4 4 2

输出

复制

-1
示例3

输入

复制

5
234 233 123 2333 23

输出

复制

253

备注:

1⩽n,∀pi⩽30001⩽n,∀pi⩽3000
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = ;
int a[maxn];
int b[maxn];
int vis[maxn], n;
void dfs(int d, int u){
if (vis[d] || u >= n)return;
vis[d] = ;
for (int i = ; i <= n; ++i){
if (d > a[i]){
int t = d^a[i];
b[i] = max(b[i], t);
if (!vis[t])dfs(t, i); //如果出现过的话就不再就不可以。
}
}
} int main()
{
cin >> n;
for (int i = ; i <= n; ++i)
cin >> a[i];
dfs(a[], );
if (b[n])cout << b[n] << endl;
else cout << - << endl;
}

最新文章

  1. 在浏览器地址栏前添加自定义的ico图标
  2. VFS分析(二)基本数据结构(持续更新)
  3. 3.5---用栈实现队列(CC150)
  4. CSS魔法堂:选择器及其优先级
  5. CentOS7 Debian 8 安装VMware-tools
  6. Unix环境链接静态库
  7. 排列组合函数next_permutation()
  8. ubuntu14.04 wps字体缺失问题
  9. 【11.2noip冲刺赛】 循环整数 (分段打表)
  10. mybatis 并发问题解决,参考hibernate
  11. Linux下产生随机密码10方法
  12. 给IConfiguration写一个GetAppSetting扩展方法
  13. 关于Apahce服务器安装中遇到的问题
  14. Jenkins+PowerShell持续集成环境搭建(一)前期准备
  15. metamask源码学习导论
  16. linux守护进程编写实践
  17. Qt学习之对话框与主窗口的创建
  18. IntelliJ IDEA 2017版 快捷键CTRL + SHIFT + A无效如何调试(详细的开启idea自动make功能 )
  19. Redis数据的底层存储原理
  20. 虚拟机中安装windows server 2008方法

热门文章

  1. java package(包)的用法
  2. 微信小程序性能优化技巧
  3. 小程序 lazy-load 不生效的问题
  4. elementUI vue table status的状态列颜色变化和操作列状态显示(停用, 启用)
  5. BZOJ2434: [Noi2011]阿狸的打字机(AC自动机 树状数组)
  6. 2018-11-21 手工翻译Vue.js源码第一步:14个文件重命名
  7. 索引堆(Index Heap)
  8. Nginx&#160;日志格式配置介绍
  9. Glide开源库的使用
  10. [Objective-C]用Block实现链式编程