2021百度之星初赛三---网格路径(dfs+剪枝/dp方程+LGV定理)

2023-11-14

任意门
在这里插入图片描述

题意&&思路:
每一步只能向下走或者向右走,然后所构成的路径不能重叠,所以就尽可能的往下面走,然后给第二条更大的空间

解法1:dfs+剪枝

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<stdlib.h>

using namespace std;

const int N=15;
char s[N];
bool a[N][N],vis[N][N];
int n;

bool dfs1(int y,int x)//先向下走,再向右走
{
	if(y==n&&x==n) return 1;
	if(y+1<=n&&a[y+1][x])
	{
		if(dfs1(y+1,x)) {vis[y][x]=1; return 1;}
	}
	if(x+1<=n&&a[y][x+1])
	{
		if(dfs1(y,x+1)) {vis[y][x]=1; return 1;}
	}
	return 0;
}

bool dfs2(int y,int x)//先向右走,再向左走
{
	if(y==n&&x==n) return 1;
	if(x+1<=n&&a[y][x+1]&&!vis[y][x+1])
	{
		if(dfs2(y,x+1)) return 1;
	}
	if(y+1<=n&&a[y+1][x]&&!vis[y+1][x])
	{
		if(dfs2(y+1,x)) return 1;
	}
	return 0;
}

int main()
{
    int test;
    cin>>test;
    while(test--)
    {

        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%s",s+1);//我觉得这种读入方式很棒
            for(int j=1;j<=n;j++)
               if(s[j]=='.')a[i][j]=1;
               else a[i][j]=0;
        }
        memset(vis,0,sizeof(vis));
        int ans=0;
        if(!a[1][1])//如果一开始就不能走的话,那就是0
        //if本身就有先后选择关系
        {
            printf("0\n");
            continue;
        }
        if(dfs1(1,1))//这里表明了是先看向下走,再向右走
        {
            ans++;
            if(dfs2(1,1))ans++;
        }
        printf("%d\n",ans);
    }
    return 0;
}

推dp方程,用LGV定理

//#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,dp[1010][1010];
char s[1010][1010];
 
ll ac(int a,int b,int c,int d)
{
    memset(dp,0,sizeof(dp));
    for(int i=a; i<=c; i++)
    {
        for(int j=b; j<=d; j++)
        {
            if(s[i][j]=='.')
            {
                if(i==a && j==b)  dp[i][j]=1;
                else dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }
    }
    return dp[c][d];
}
 
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        scanf("%d",&n);
        for(int i=1; i<=n; i++)    cin>>s[i]+1;
            
        if(s[1][1]=='#'||s[n][n] == '#') {
            printf("0\n");
            continue;
        }
 
        ll t1 = ac(1, 2, n-1, n);    
		ll t2 = ac(2, 1, n, n-1);
        ll t3 = ac(1, 2, n, n-1);    
		ll t4 = ac(2, 1, n-1, n);
        
        if(t1*t2-t3*t4)    printf("2\n");
        
        else {
            int flag = ac(1,1,n,n);
            if(flag) printf("1\n");
            else printf("0\n");
        }
    }
    return 0;
}

呐,这里扩展一下LGV

LGV引理可以用于在有向无环便(DAG)上求解不相交路径方案数问题

非降路径之和

在这里插入图片描述
暂时是我不能敲出来的,以后再来练练

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021百度之星初赛三---网格路径(dfs+剪枝/dp方程+LGV定理) 的相关文章

  • 脉冲的三种形式

    脉冲信号可以分为AB相脉冲 脉冲 方向 CW CCW脉冲 这三种信号格式 在十几年前或者还有明显的相对优缺点和适用场合 现在就已经无所谓了 即使在使用上还是有所区分 也基本上是由于历史习惯 1 A B信号 位置传感器最喜欢的格式 因为 早期
  • 修改远程桌面端口bat批处理(windows)

    新建批处理 将以下内容复制进去即可 修改成功后会自动重启 echo off color f0 echo 修改远程桌面3389端口 支持Windows 2003 2008 2008R2 2012 2012R2 7 8 10 echo 自动添加
  • springboot 集成 elasticsearch(maven项目)

    1 搭建springboot项目 能跑起来 具体百度 我的springboot版本 1 5 9 RELEASE 2 本机或者服务器安装elasticsearch并启动服务成功 我本地Windows安装的elasticsearch版本6 1
  • geo算法了解学习以及选择

    需求 通过坐标了解到距离最近的桩号 建筑 景点 Mysql Sql语句 SELECT id ST Distance Sphere POINT item longitude item latitude POINT longitude lati
  • Postman第七篇:其他好用的功能及工具

    其他好用的功能及工具 分组 Collection 在刚开始一个项目时 为了后续便于组织和管理 把同属该项目的多个 API 放在一组里 所以要先去新建一个 Collection New gt Collection 使用了段时间后 建了多个分组
  • 如何创建一个自己的sphinx文档网站

    文章目录 前言 一 操作步骤 1 安装anaconda 2 启动python3 8环境 3 安装Sphinx 4 创建文件夹 5 初始化环境 6 编译 7 文件夹搭查看 8 搭建nginx查看 8 更换主题 9 错误修复 10 这里提供两个
  • IDEA学习记录19--sql注入与Statement预编译

    1 sql注入 package net xdclass web dao import java sql Connection import java sql DriverManager import java sql ResultSet i
  • 从FindBugs中学Java【一】

    2019独角兽企业重金招聘Python工程师标准 gt gt gt findbug 这里 中文列表 http svn codehaus org sonar plugins tags sonar l10n zh plugin 1 1 src
  • forwardRef 的详解及使用

    一 介绍 React forwardRef 会创建一个React组件 这个组件能够将其接受的 ref 属性转发到其组件树下的另一个组件中 这种技术并不常见 但在以下两种场景中特别有用 转发 refs 到 DOM 组件 在高阶组件中转发 re
  • vue 一直发送请求websocket

    vue项目运行时一直请求websocket 导致控制台 接口大量报错无法查看控制台输出内容以及接口返回值 解决办法 打开 node modules sockjs client dist sockjs js 文件将 self xhr send
  • easyexcel poi 指定行指定列设置样式

    easyexcel poi 指定行指定列设置样式 1 给指定行指定列设置字体及居中 2 给指定行指定列设置边框 1 给指定行指定列设置字体及居中 给指定行指定列设置字体及居中 param workbook param rowIndex 第几
  • 【小沐学CAD】虚拟仿真开发工具:GL Studio

    文章目录 1 简介 2 软件功能 3 应用行业 3 1 航空 3 2 汽车 3 3 防御 3 4 工业 3 5 电力与能源 3 6 医疗 3 7 空间 3 8 科技 结语 1 简介 https disti com gl studio htt
  • 数据结构之算法复杂度篇

    要努力 但是不要急 繁花锦簇 硕果累累都需要过程 目录 前言 1 什么是数据结构 2 什么是算法 3 算法的复杂度 1 概念 2 时间复杂度 3 空间复杂度 4 常见的复杂度对比 4 复杂度的oj练习 5 总结 前言 在程序段运行的时候 我
  • 将h5封装为微信小程序

    1 要求网站域名必须为https 2 登录微信公众号好注册一个小程序账号 3 打开威胁你开发者工具进行创建 4 打开app json文件 pages项只保留 pages index index 这一行 5 打开 pages index in
  • 【千律】C++基础:类定义和类实现的分离

    类定义就是指定义类名 是 h文件 类实现是指对类定义的具体实现 是 cpp文件 下面是Student h中的内容 pragma once include
  • frc机器人比赛主题_参加了十几场机器人竞赛后,我才敢告诉你:怎样做到不“踩坑”?...

    在决定参加比赛之前 先问自己为什么 为什么要先聊这一点 因为这个问题会决定你的很多选择 很多家长会先去看那个 果 比如 比赛获奖有没有用 这个比赛含金量如何 但是这个 因 是每个家长要先问自己的 你是不是认同机器人竞赛是对孩子综合能力的提升
  • 2000端口号的坑

    这两天对接某游戏的充值接口的时候碰到一个恶心的问题 公司机器和服务器请求游戏方2000端口号的时候 死活获取不到返回No Response 但是同一个请求串外网环境都是正常的 经多次和游戏方你来我往之后发现 2000端口默认是sccp协议
  • 2W字长文吐血整理 Docker&云原生

    Docker 和 云原生 一 概念介绍 1 1 Docker Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 然后发布到任何流行的 Linux或Windows操作系统的机器上 也可以实现虚拟

随机推荐

  • React 应用的 Nginx 缓存控制

    典型 React 应用面临的缓存问题 可通过 Nginx 配置进行解决 通用部署 构建应用后 只需使用 Nginx 指向静态文件即可 server listen 80 root PATH TO APP build try files uri
  • 爬虫碎碎念

    20230304 非专业人士 简单记录自己的需求和思考 0 引言 平时看到一些网站的照片什么的 有那种批量下载的需求 当然有些也是视频网站的图片介绍什么的 也即是说 我需要把这些网站的照片批量下载下来 以前的时候 写过简单的爬虫 因为需求比
  • Docker——搭建ELK

    安装Elasticsearch 1 拉取镜像 docker box home box docker pull elasticsearch 7 14 2 2 在宿主机准备配置文件 创建目录 docker box mkdir p server0
  • 资源list:Github上关于大数据的开源项目、论文等合集

    Awesome Big Data A curated list of awesome big data frameworks resources and other awesomeness Inspired byawesome php aw
  • 注释转换(C->C++)

    转换原理图解 基于上图原理 可以写出代码 主函数 define CRT SECURE NO WARNINGS 1 include
  • Jenkins从配置到实战(二) - Jenkins的Master-Slave分布式构建

    前言 Jenkins的Master Slave分布式构建 就是通过将构建过程分配到从属Slave节点上 从而减轻Master节点的压力 而且可以同时构建多个 有点类似负载均衡的概念 简单理解就是 将Jenkins服务器上的构建任务分配到其他
  • 数据采集专家----4通道AD采集子卡推荐

    FMC136是一款4通道250MHz采样率16位AD采集FMC子卡 符合VITA57规范 可以作为一个理想的IO模块耦合至FPGA前端 4通道AD通过高带宽的FMC连接器 HPC 连接至FPGA从而大大降低了系统信号延迟 该板卡支持板上可编
  • Unity_Shader高级篇_16_Unity Shader入门精要_减少计算复杂度

    16 8 减少计算复杂度 16 8 1 Shader的LOD技术 和16 5 2提到的模型的LOD技术类似 Shader的LOD技术可以控制使用的Shader等级 它的原理是 只有Shader的LOD值小于某个设定的值 这个Shader才会
  • vue rsa对密码加密(jsencrypt)

    首先用npm命令下载jsencrypt npm install jsencrypt dep 在vue文件中引入jsencrypt import JSEncrypt from jsencrypt 对password加密 this encryp
  • vcglib 说明(转载)

    先来看看 VCGlib 能做什么 最基本的 它提供 Mesh triangular mesh tetrahedralmesh 三角网格或四面体网格 数据结构的定义 该数据结构支持对 Mesh数据的快速访问 拓扑信息 空间查询等 以及高效执行
  • Linux编译器-gcc 的使用以及 make/Makefile的用法

    文章目录 一 gcc 编译器 1 gcc 命令格式 gcc选项 2 完成过程 2 1预处理 2 2 编译 生成汇编 2 3 汇编 生成机器可识别代码 2 4 链接 生成可执行文件 二 make Makefile 1 简单介绍 2 示例代码
  • Scala高阶函数

    匿名函数 而在大量的spark中大都用的是匿名函数 不为函数命名 然后将其复制个一个变量 如 匿名函数格式 Val 变量名 参数 类型 gt 函数体 高阶函数 函数参数 1 将函数做参数传给另一个函数 如 首先我们定义了一个函数BigDat
  • 学习记录——matlab批量读取与存储

    要求文件名按照一定规律排列 如 代码 clc close all clear 设置目标文件夹的路径 folder C Users 26748 Desktop two saveFolder C Users 26748 Desktop two0
  • 手撕机器学习算法--一步步推导-------NFL(没有免费午餐定理)

    文章目录 前言 一 NFL是什么 二 表现形式 三 介绍 四 手动推导 前言 其实机器学习也好 深度学习也罢 在我看来 代码编程终究是不重要的 因为现成的库 其数学原理 其公式推导才是我们需要理解的地方 一 NFL是什么 没有免费的午餐定理
  • BLAS+BLACS+LAPACK+SCALAPACK安装

    最快的安装是用下面的scalapack installer 它将自动联网安装SCALAPACK以及所需要的BLAS BLACS LAPACK 下面是简短说明 INTRODUCTION The ScaLAPACK installer is a
  • 人脸识别打卡项目(4)

    目录 服务器打卡函数实现 签到验证检测 百度人脸识别复用 总结 服务器打卡函数实现 打卡函数的主要工作流程如图所示 当启动开始签到后 调用打卡签到响应函数 启动人脸采集设 备 然后与百度人脸库注册的人脸进行对比 如果用户存在 返回用户姓名
  • MATLAB之绘图基础

    第7部分 MATLAB的绘图基础 1 二维图形绘制 1 plot 函数 格式 plot x plot x y 图形绘制函数plot x 的格式说明 x内容 说明 实向量y 以y元素下标序号i为横坐标 元素y为纵坐标 绘制 I y 的有序集合
  • paddle在Edgeboard与安卓上部署

    Edgboard PaddleLite进行推理 支持Paddle模型的推理部署 不需要模型转化过程 支持c 和hpyton的接口 提供ZU3 ZU5 ZU9 推荐使用Paddlx进行模型训练 其训练出的模型会有API进行模型导出 图像前处理
  • NIO、AIO、BIO的区别(通俗理解)

    BIO 同步阻塞 服务端需要对客户端的每个请求处理完成后 才会继续接受客户端的请求 客户端也会等待服务端处理完请求后才会发送请求 通常会使用多线程去处理 因为BIO每个连接一个单独的线程 NIO 同步非阻塞 NIO使用单线程或者只使用少量的
  • 2021百度之星初赛三---网格路径(dfs+剪枝/dp方程+LGV定理)

    任意门 题意 思路 每一步只能向下走或者向右走 然后所构成的路径不能重叠 所以就尽可能的往下面走 然后给第二条更大的空间 解法1 dfs 剪枝 include