首页 > 其他分享 >【ABC271F】XOR on Grid Path

【ABC271F】XOR on Grid Path

时间:2023-02-05 17:45:48浏览次数:38  
标签:25 XOR val dep int Grid dx dy Path

首先你一路爆搜过去结果肯定是对的。

但是你从左上角走到右下角需要 \(2(n-1)\) 步,而每一步有两种选择,则总共有 \(2^{2(n-1)}\) 种路径搜不死你

如何优化呢?我们连接右上角和左下角,钦定这一条对角线上的点是“转折点”。

当我们的搜搜搜程序到达某个转折点时,就可以了!

再钦定一个计数器 \(f[x][y][val]\),表示从左上角到转折点 \((x,y)\) 时路径异或值为 \(val\) 的方案数。

由于异或有性质:\(a\oplus a=0\)(\(\oplus\) 表示异或,即 ^ 运算符)

那么只要我们再从右下角搜搜搜到转折点,然后看能结出几条路就可以了。

#include <map>
#include <stdio.h>
int val[25][25];
int n,i,j;
long long res;
std::map<long long,int> f[25][25];//注意long long。
const int dx[5]={0,1,0,-1,0};
const int dy[5]={0,0,1,0,-1};
inline void fill(int x,int y,int dep)//从左上角搜!搜!搜!
{
	dep^=val[x][y];//注意这两段程序中这句话的位置是不同的。
	if(x+y==n+1)
	{
		++f[x][y][dep];
		return ;
	}
	fill(x+dx[1],y+dy[1],dep);
	fill(x+dx[2],y+dy[2],dep);
	return ;
}
inline void solve(int x,int y,int dep)//从右下角搜!搜!搜!
{
	if(x+y==n+1)//对角线性质:行列数相加为n+1.
	{
		res+=f[x][y][dep];//现在路上是dep,dep^dep=0
		return ;
	}
	dep^=val[x][y];
	solve(x+dx[3],y+dy[3],dep);
	solve(x+dx[4],y+dy[4],dep);
}
int main()
{
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		for(j=1;j<=n;++j)
			scanf("%d",val[i]+j);
	fill(1,1,0);
	solve(n,n,0);
	printf("%lld",res);
	return 0;
}

标签:25,XOR,val,dep,int,Grid,dx,dy,Path
From: https://www.cnblogs.com/Syara/p/17093691.html

相关文章

  • 题解 G. Grammar Path 2020-2021 ICPC NERC (NEERC), North-Western Russia Regional
    传送门【大意】给定一个CNF和一个有向图。有向图上的每一条边都写上了一个字母。要求你从\(s\)到\(t\)走一条尽可能短的路,且将经过的字母写下来后,这个字符串能被......
  • java中PATH和CLASSPATH
    1、windows中临时设置PATH的方法(只在当前窗口中有效)F:\ch01>D:\Java\jdk-11.0.7\bin\javacF:\ch01>setpath=D:\Java\jdk-11.0.7\bin\F:\ch01>javacWelcome.javaF:\ch......
  • vue嵌套路由子路由 path 注意
    子路由的地址如果是希望拼接父路由地址,子路由的path仅写名称,不写“/”,如果希望是另外的地址,则直接以“/”开头。{path:"/lifetools",name:"li......
  • Codeforces1151B-Dima and a Bad XOR(构造)
    这道题真的想复杂了,作为div2的B题肯定不算难。只要构造出任意一种异或和大于1就行,如果第一列的值异或和>1,就直接全输入1即可,如果等于0,我们只要在任意一行中找到一个不等于......
  • Asp.net中GridView使用详解
     l         GridView无代码分页排序l         GridView选中,编辑,取消,删除l         GridView正反双向排序l         GridView和......
  • GOROOT、GOPATH、Go Modules 三者的关系介绍
    GOROOTGOROOT路径即为存放Golang语言内建的程序库的所在位置,简单地说就是Golang的安装路径若按照Folang-Downloadandinstall流程,则由goenv命令查询到的结果为GORO......
  • [golang]filepath.Glob的缺陷,不支持多级目录
    最近在使用Gin框架的模板加载过程中,发现其对于多级子目录中的模板支持有问题(仅仅支持一级子目录),后经过查看其源码发现是filepath包的Glob方法的问题。下面先说结论:多......
  • OSPF Open Shortest Path First
    OSPF(OpenShortestPathFirst开放式最短路径优先)是一个内部网关协议(InteriorGatewayProtocol,简称IGP),用于在单一自治系统(AutonomousSystem,AS)内决策路由。是对链......
  • JAXP、DOM4J、Jsoup、JsoupXPath等常用XML解析器的使用
    (JAXP、DOM4J、Jsoup、JsoupXPath等常用XML解析器的使用)XML概述XML(ExtensibleMarkupLanguage),可扩展标记语言。XML具有标签自定义,语法严格,适用于存储数据与传输数据......
  • [LeetCode]Minimum Path Sum
    QuestionGivenamxngridfilledwithnon-negativenumbers,findapathfromtoplefttobottomrightwhichminimizesthesumofallnumbersalongitspath.N......