美文网首页
小a与星际探索---dp

小a与星际探索---dp

作者: ffffffffffffly | 来源:发表于2019-01-25 20:47 被阅读0次

来自牛客网集训营1一道题:小a与星际探索

题目描述

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

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

输入描述:

第一行一个整数n,表示星球数
接下来一行有n个整数,第i个整数表示pi

输出描述:

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

输入

5
234 233 123 2333 23

输出

253

备注:

1⩽n,∀pi⩽3000

先上代码

#include <cstdio>
#include <cstring>
const int maxn = 1 << 12;  //3000

bool dp[maxn];  //判断当前耐久度是否可达
int exp[3005], ex[3005]; //ex[]是有可能到达的星球的能量

int main()
{
    int n, pos, ans;
    while(~scanf("%d", &n))
    {
        memset(dp, 0, sizeof(dp));
        for(int i=0; i<n; ++i)
            scanf("%d", &exp[i]);
        if(exp[0] <= exp[n-1]){  //1号星球的能量比n好星球的能量小或相等
            puts("-1"); continue;
        }
        pos = 0;
        dp[exp[0]^exp[n-1]] = true;  //1号到n号星球可达的耐久度
        for(int i=1; i<n-1; ++i)
        {
            if(exp[i] < exp[0] && exp[i] > exp[n-1])
                    ex[pos++] = exp[i]; //初步判断有可能到达的星球的能量
        }
        for(int i = 0; i<pos; ++i){
          /*如果之前的dp[j^ex[i]]为true(之前能达到j^ex[i]),
            那么取当前这个ex[i],得j^ex[i]^ex[i]=j,
            说明j也是可以达到的,于是只要dp[j^ex[i]]为true,dp[j]就为true
         */
            for(int j = maxn-1; j>=0; --j)
            {
                dp[j] |= dp[j^ex[i]];  //之前dp[j]已经为true,则不取当前的ex[i],dp[j]保持为true,表示j可达
            }
        }
        for(int i = maxn-1; i>=0; --i)
        {
            if(dp[i]) //从大到小,如果当前耐久度可达
            {
                ans = i; break;
            }
        }
        printf("%d\n", ans ? ans: -1);
    }
    return 0;
}

相关文章

  • 小a与星际探索---dp

    来自牛客网集训营1一道题:小a与星际探索 题目描述 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从1号星球出发前...

  • 星际探索

    一 你看过《火星救援》这部电影吗?那是一部科幻片,一个悲催的宇航员被遗忘在火星上了,发现这一重大事件以后,各方联手...

  • 星际探索

    自从人类认识到地球是圆的开始,逐步认识到我们地球仅仅是广袤的宇宙中的一粒尘埃,从而开始认知宇宙,人类历史上...

  • 星际探索

    之前看过一个外太空的电影叫做火影救援。名字都不记得了要反复想才想起来。然后这次有一个非常类似的电影,叫做星际探索。...

  • 星际探索

    片头,皮特站在通天电梯上做维护,望着脚下蓝色星球,微风从身边拂过。这是电影中我最喜欢的片段。 星际探索号称要挑战星...

  • 星际探索

    《星际探索》是由詹姆斯·格雷执导,布拉德·皮特、汤米·李·琼斯、丽芙·泰勒、唐纳德·萨瑟兰、鲁丝·内伽、约翰·奥提...

  • 星际探索

    深处星空有无与伦比的浪漫 也有无与伦比的孤独

  • 星际探索

  • 《星际探索》

    《星际探索》讲述了宇航员罗伊为了找回失联多年的父亲克里弗,决定踏上去往海王星的旅程的故事。该片由詹姆斯·格雷执...

  • 《星际探索》:爱与生命

    这部女神庆山推荐的电影,真心Great。 近两小时的太空片让看得我热血沸腾。 全片的太空画面让人震撼不提,而更重要...

网友评论

      本文标题:小a与星际探索---dp

      本文链接:https://www.haomeiwen.com/subject/fhlsjqtx.html