考场上唯一会的题目。


显然是 dfs 爆搜。
准备四个参数:行、列、可转向次数、当前方向,然后分四种情况:

  • 向右,改变方向
  • 向右,不改变方向
  • 向下,改变方向
  • 向下,不改变方向

一个一个做即可。

然而不知怎的(大概 USACO 评测机波动)A 了。
这是考场 AC 代码 结果发现在尼姑 TLE 了。
于是开始了劲爆卡常。
好吧其实不止卡常,还有剪枝。


如果把一些条件(如越界、不符合要求的格子、到达终点、改变方向次数等)放在函数开头,则会多递归一次,增加常数,从而导致 TLE。
因此我们要在递归前判断。
部分代码:

void dfs(int x,int y,int k,int fx)
{if(fx==2)//两种情况(向下、向右){if(x+1<=n&&!a[x+1][y])//不改变方向{if(x+1==n&&y==n) ++ans;//到达终点,下同else dfs(x+1,y,k,2);}if(y+1<=n&&k&&!a[x][y+1])//改变方向{if(x==n&&y+1==n) ++ans;else dfs(x,y+1,x==1&&y==1?k:k-1,1);//起点的转向不计入 k 内,下同}}else{if(y+1<=n&&!a[x][y+1])//不改变方向{if(x==n&&y+1==n) ++ans;else dfs(x,y+1,k,1);}if(x+1<=n&&k&&!a[x+1][y])//改变方向{if(x+1==n&&y==n) ++ans;else dfs(x+1,y,x==1&&y==1?k:k-1,2);}}
}

AC 记录。

【Luogu】P7995 [USACO21DEC] Walking Home B相关推荐

  1. 【Luogu】P1613 跑路

    [Luogu]P1613 跑路 一.题目 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资 ...

  2. 【Luogu】P3927 SAC E#1 - 一道中档题 Factorial

    [题目]洛谷10月月赛R1 提高组 [题意]求n!在k进制下末尾0的个数,n<=1e18,k<=1e16. [题解]考虑10进制末尾0要考虑2和5,推广到k进制则将k分解质因数. 每个质因 ...

  3. 【Luogu】P3369 【模板】普通平衡树(树状数组)

    P3369 [模板]普通平衡树(树状数组) 一.树状数组 树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构. ...

  4. 【YBTOJ】【Luogu】方案统计lucas定理

    思路: Lucas定理 YBTOJ #include<iostream> #include<cstdio> #define ll long longusing namespac ...

  5. 【Luogu】B2119 删除单词后缀

    提供一种较为玄学做法. 我们先不看这种做法,先来看一个 75pts75pts75pts 的做法: #include<bits/stdc++.h> using namespace std;i ...

  6. 【Luogu】P1013进制位(搜索)

    题目链接在这里 这题和虫食算比较类似.做完这道题可以去做虫食算.都是搜索一类的题. 这样 我们分析题目可以发现进制只可能是字母的个数,也就是n-1.为什么? 因为题目要求完整的加法表才算数.如果进制低 ...

  7. 【Luogu】P3356火星探险问题(费用流)

    题目链接 网络流一条边都不能多连?没道理呀? 不过单看这题的确是个sb题-- #include<cstdio> #include<algorithm> #include< ...

  8. 【Luogu】P3224永无乡(splay)

    题目链接 splay模板,启发式合并(其实就是暴力插入)即可. 顺便吐槽时限,带垃圾回收而已--不至于最后一个点死活不让过吧? #include<cstdio> #include<c ...

  9. 【Luogu】P3950部落冲突(树链剖分)

    题目链接 状态奇差无比,sbt都能错一遍. 不动笔光想没有想到怎么做,画图之后发现一个很明显的性质-- 那就是两个开战的部落,其中一个是另一个的父亲. 所以在儿子那里加个权值.查询的时候树链剖分查询链 ...

  10. 【Luogu】P1383高级打字机

    可持久化线段树模板题之一. 权当温习主席树模板 #include<cstdio> #include<cstdlib> #include<cctype> #defin ...

最新文章

  1. LB负载均衡集群 - NAT
  2. hdu1394 Minimum Inversion Number 线段树和树状数组
  3. 为什么python不出结果_Python 的 Checksum 为什么结果是一长串数字而不是如下效果...
  4. l2正则化python_回归分析_L2正则化(岭回归)【python实现】
  5. Ubuntu的 g++ gcc版本升降级
  6. 愤怒的小鸟4只编外鸟_幼儿园小班游戏教案小鸟找食
  7. GridView 72般绝技(一)
  8. 共享文件夹只能连接20人_英语正能量 | 快乐可以与人共享,苦难却只能自己坚强...
  9. 常用 MQTT 客户端库简介
  10. 梦三国测试服显示连接服务器失败,我的登陆进去以后说与服务器失去连接怎么回事...
  11. 慧荣SM2246XT、SM2246EN开卡教程 及 固件下载
  12. 小知识--电脑的快捷键
  13. 未来混合云的发展可能有两个方向 | 5G技术研发试验第三阶段规范正式发布
  14. LUA中判断GameObject是否被Destory
  15. 应用宝上架审核要求_Android应用商店上架审核要求
  16. Quartus II 18.1的下载安装和注册
  17. VScode远程调试remote development
  18. 今年 NFT 爆火,如何快速入行?(艺术家完整指南)
  19. SIM71004G模块使用Linux C语言实现打电话发短信
  20. 简历邮件半自动批量发送模板

热门文章

  1. 品牌鞋的运作,如何判别鞋的品牌真伪
  2. xp计算机调亮度,老xp系统怎么调亮度台式电脑(教你XP系统如何调节亮度)
  3. 台式计算机M丅BF是什么,台式机主板的 BIOS ID 代码
  4. (十三)jQuery addClass()和removeClass()方法
  5. linux文件夹可视化工具,4款简单实用的的服务器文件管理工具推荐
  6. python命令行参数是什么
  7. 【转载】 Sqlserver使用Left函数从最左边开始截取固定长度字符串
  8. 第1章思维导图图片版
  9. coldfusion php,coldfusion在php中解密
  10. dismiss和remove_关于dismiss的用法,dismiss和fire的区别?