zoukankan      html  css  js  c++  java
  • 小a与星际探索

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

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

    输入描述:

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

    输出描述:

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

    输入

    复制
    3
    457 456 23

    输出

    复制
    478

    说明

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

    输入

    复制
    4
    2 4 4 2

    输出

    复制
    -1
    示例3

    输入

    复制
    5
    234 233 123 2333 23

    输出

    复制
    253

    备注:

    1n,pi30001⩽n,∀pi⩽3000

    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int maxn = 5005;
    int a[maxn];
    int b[maxn];
    int vis[maxn], n;
    void dfs(int d, int u){
        if (vis[d] || u >= n)return;
        vis[d] = 1;
        for (int i = 2; 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 = 1; i <= n; ++i)
            cin >> a[i];
        dfs(a[1], 1);
        if (b[n])cout << b[n] << endl;
        else cout << -1 << endl;
    }
  • 相关阅读:
    python的生成Jwt
    qq邮箱验证
    DJango反序列化器的参数效验
    python三元运算,继承,help函数 args
    python时间板块,计算取值,math函数
    No migrations to apply. django同步数据库失败
    redis理论部分
    Java入门——day1
    HBO《硅谷》中的二进制码
    复习总表现(每天记录一下)
  • 原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/10323843.html
Copyright © 2011-2022 走看看