题目描述

筱玛是个快乐的男孩子。
寒假终于到了,筱玛决定请他的朋友们一起来玩迷阵探险。
迷阵可以看做一个n×nn×n的矩阵A,每个格子上有一个有一个数Ai,j
入口在左上角的(1,1)处,出口在右下角的(n,n)处。每一步都只能向下或向右移动一格。最后能获得的经验值为初始经验e与路径上经过的所有数的权值异或和。
求筱玛最大可能获得的经验值。

输入描述:

第一行两个整数n和e。
接下来n行,每行n个整数,描述矩阵A。

输出描述:

一个整数,表示筱玛最大可能获得的经验值。
示例1

输入

复制

5 2
3 4 7 2 6
3 5 2 9 0
3 8 5 7 3
2 5 3 1 4
9 8 6 3 5

输出

复制

15

链接:https://ac.nowcoder.com/acm/contest/545/D

思路:显然我们直接搜等于是在搜一颗二叉树,复杂度O(2^40)左右,肯定超时。但是我们可以用其他方法搜,先从左上角搜,,搜到对角线,然后把所有答案保存在01字典树里。再从右下角往回搜,遇到对角线直接在字典树搜最大异或,取最大值。

代码:

#include<cmath>
#include<cstdio>
#include<vector>
#include<cstring>
#include <iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn = + ;
const int INF = 0x3f3f3f3f;
struct node{
node* Next[];
node(){
for(int i = ; i < ; i++)
Next[i] = NULL;
}
};
node* e[maxn]; //走到对角线(含)
int mp[maxn][maxn];
int n, s;
void add(int x, int pos){
node* a = e[pos];
for(int i = ; i >=; i--){
int v = (x >> i) & ;
if(a ->Next[v] == NULL)
a ->Next[v] = new node();
a = a ->Next[v];
}
}
int query(int x, int pos){
node* a = e[pos];
int ret = ;
for(int i = ; i >= ; i--){
int v = (x >> i) & ;
if(a ->Next[!v] != NULL){
a = a ->Next[!v];
ret += ( << i);
}
else a = a ->Next[v];
}
return ret;
}
void dfs(int x, int y, int sum){
if(x + y == n + ){
add(sum ^ mp[x][y], x);
return;
}
dfs(x + , y, sum ^ mp[x][y]);
dfs(x, y + , sum ^ mp[x][y]);
}
int Max;
void dfsBack(int x, int y, int sum){
if(x + y == n + ){
Max = max(query(sum, x), Max);
return;
}
dfsBack(x - , y, sum ^ mp[x][y]);
dfsBack(x, y - , sum ^ mp[x][y]);
}
int main(){
scanf("%d%d", &n, &s);
for(int i = ; i <= n; i++){
e[i] = new node();
for(int j = ; j <= n; j++){
scanf("%d", &mp[i][j]);
}
}
dfs(, , s);
Max = -;
dfsBack(n, n, );
printf("%d\n", Max);
return ;
}

newcoder 筱玛的迷阵探险(搜索 + 01字典树)题解的更多相关文章

  1. 牛客练习赛37C 筱玛的迷阵探险 双向搜索+字典树

    题意 筱玛是个快乐的男孩子.寒假终于到了,筱玛决定请他的朋友们一起来玩迷阵探险.迷阵可以看做一个的矩阵A,每个格子上有一个有一个数Ai,j.入口在左上角的(1,1)处,出口在右下角的(n,n)处.每一 ...

  2. AcWing:144. 最长异或值路径(dfs + 01字典树)

    给定一个树,树上的边都具有权值. 树中一条路径的异或长度被定义为路径上所有边的权值的异或和: ⊕ 为异或符号. 给定上述的具有n个节点的树,你能找到异或长度最大的路径吗? 输入格式 第一行包含整数n, ...

  3. 字典树基础进阶全掌握(Trie树、01字典树、后缀自动机、AC自动机)

    字典树 概述     字典树,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它 ...

  4. Chip Factory---hdu5536(异或值最大,01字典树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5536 题意:有一个数组a[], 包含n个数,从n个数中找到三个数使得 (a[i]+a[j])⊕a[k] ...

  5. Xor Sum---hdu4825(01字典树模板)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4825 题意:有n个数m个查找,每个查找有一个数x, 从序列中找到一个数y,使得x异或y最大 ...

  6. Codeforces Round #367 (Div. 2)---水题 | dp | 01字典树

    A.Beru-taxi 水题:有一个人站在(sx,sy)的位置,有n辆出租车,正向这个人匀速赶来,每个出租车的位置是(xi, yi) 速度是 Vi;求人最少需要等的时间: 单间循环即可: #inclu ...

  7. hdu5296 01字典树

    根据二进制建一棵01字典树,每个节点的答案等于左节点0的个数 * 右节点1的个数 * 2,遍历整棵树就能得到答案. AC代码: #include<cstdio> using namespa ...

  8. Choosing The Commander CodeForces - 817E (01字典树+思维)

    As you might remember from the previous round, Vova is currently playing a strategic game known as R ...

  9. hdu-4825(01字典树)

    题意:中文题意 解题思路:01字典树板子题 代码: #include<iostream> #include<algorithm> #include<cstdio> ...

随机推荐

  1. gispro试用版账户注册

    1.注册账户 http://www.esri.com/zh-cn/arcgis/products/arcgis-pro/trial 2.分配账户权限 3.gispro可以登录了

  2. Unity shader学习之Forward Rendering Path

    Forward rendering path shader如下: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObje ...

  3. JSP知识点

    1.九大内置对象: request HttpServletRequest类的实例 response HttpServletResponse类的实例 out PrintWriter类的实例,用于把结果输 ...

  4. Vue系列之 => 自定义键盘修饰符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04(转)

    http://www.powerxing.com/install-hadoop/ http://blog.csdn.net/beginner_lee/article/details/6429146 h ...

  6. 【转】robotFramework 与testlink集成

    场景: robotframework 执行完用例之后,将执行结果报至testlink. 方案1: 通过TestLink-API-Python-client中的RF关键字 每条用例执行完成之后根据状态进 ...

  7. bash 替换特殊字符

    bash 替换特殊字符 PID=`netstat -tpln|grep `;PID=${PID#*LISTEN};PID=`echo $PID | sed -s "s/\/java//g&q ...

  8. Java锁详解

    http://blog.csdn.net/pzasdq/article/details/53128331 http://blog.csdn.net/truelove12358/article/deta ...

  9. PNG文件格式详解

    源文件地址:https://blog.mythsman.com/2015/12/08/1/ 最近在看隐写术的时候经常需要研究图片文件的二进制文档格式,那么这就很有必要了解我们的图片文件究竟是如何保存的 ...

  10. vue中组件通信之子父通信

    <div id="app"> <parent-comp1></parent-comp1> <parent-comp1></pa ...