【Luogu】P7995 [USACO21DEC] Walking Home B
考场上唯一会的题目。
显然是 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相关推荐
- 【Luogu】P1613 跑路
[Luogu]P1613 跑路 一.题目 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资 ...
- 【Luogu】P3927 SAC E#1 - 一道中档题 Factorial
[题目]洛谷10月月赛R1 提高组 [题意]求n!在k进制下末尾0的个数,n<=1e18,k<=1e16. [题解]考虑10进制末尾0要考虑2和5,推广到k进制则将k分解质因数. 每个质因 ...
- 【Luogu】P3369 【模板】普通平衡树(树状数组)
P3369 [模板]普通平衡树(树状数组) 一.树状数组 树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构. ...
- 【YBTOJ】【Luogu】方案统计lucas定理
思路: Lucas定理 YBTOJ #include<iostream> #include<cstdio> #define ll long longusing namespac ...
- 【Luogu】B2119 删除单词后缀
提供一种较为玄学做法. 我们先不看这种做法,先来看一个 75pts75pts75pts 的做法: #include<bits/stdc++.h> using namespace std;i ...
- 【Luogu】P1013进制位(搜索)
题目链接在这里 这题和虫食算比较类似.做完这道题可以去做虫食算.都是搜索一类的题. 这样 我们分析题目可以发现进制只可能是字母的个数,也就是n-1.为什么? 因为题目要求完整的加法表才算数.如果进制低 ...
- 【Luogu】P3356火星探险问题(费用流)
题目链接 网络流一条边都不能多连?没道理呀? 不过单看这题的确是个sb题-- #include<cstdio> #include<algorithm> #include< ...
- 【Luogu】P3224永无乡(splay)
题目链接 splay模板,启发式合并(其实就是暴力插入)即可. 顺便吐槽时限,带垃圾回收而已--不至于最后一个点死活不让过吧? #include<cstdio> #include<c ...
- 【Luogu】P3950部落冲突(树链剖分)
题目链接 状态奇差无比,sbt都能错一遍. 不动笔光想没有想到怎么做,画图之后发现一个很明显的性质-- 那就是两个开战的部落,其中一个是另一个的父亲. 所以在儿子那里加个权值.查询的时候树链剖分查询链 ...
- 【Luogu】P1383高级打字机
可持久化线段树模板题之一. 权当温习主席树模板 #include<cstdio> #include<cstdlib> #include<cctype> #defin ...
最新文章
- LB负载均衡集群 - NAT
- hdu1394 Minimum Inversion Number 线段树和树状数组
- 为什么python不出结果_Python 的 Checksum 为什么结果是一长串数字而不是如下效果...
- l2正则化python_回归分析_L2正则化(岭回归)【python实现】
- Ubuntu的 g++ gcc版本升降级
- 愤怒的小鸟4只编外鸟_幼儿园小班游戏教案小鸟找食
- GridView 72般绝技(一)
- 共享文件夹只能连接20人_英语正能量 | 快乐可以与人共享,苦难却只能自己坚强...
- 常用 MQTT 客户端库简介
- 梦三国测试服显示连接服务器失败,我的登陆进去以后说与服务器失去连接怎么回事...
- 慧荣SM2246XT、SM2246EN开卡教程 及 固件下载
- 小知识--电脑的快捷键
- 未来混合云的发展可能有两个方向 | 5G技术研发试验第三阶段规范正式发布
- LUA中判断GameObject是否被Destory
- 应用宝上架审核要求_Android应用商店上架审核要求
- Quartus II 18.1的下载安装和注册
- VScode远程调试remote development
- 今年 NFT 爆火,如何快速入行?(艺术家完整指南)
- SIM71004G模块使用Linux C语言实现打电话发短信
- 简历邮件半自动批量发送模板
热门文章
- 品牌鞋的运作,如何判别鞋的品牌真伪
- xp计算机调亮度,老xp系统怎么调亮度台式电脑(教你XP系统如何调节亮度)
- 台式计算机M丅BF是什么,台式机主板的 BIOS ID 代码
- (十三)jQuery addClass()和removeClass()方法
- linux文件夹可视化工具,4款简单实用的的服务器文件管理工具推荐
- python命令行参数是什么
- 【转载】 Sqlserver使用Left函数从最左边开始截取固定长度字符串
- 第1章思维导图图片版
- coldfusion php,coldfusion在php中解密
- dismiss和remove_关于dismiss的用法,dismiss和fire的区别?