搜索水题四连发_C++
特别声明:以下题目有部分为原创题,涉及版权问题,不得转载,违者追究 法律责任!
话说这是一套神题,只有你想不到,没有你做不到
题目更正后比 Pascal 跑得还快哈~
一道特别裸,但是特别坑的搜索题
题解给出了一行字
这个包含的意思就很多了~比如DFS的深度是第几朵花,而不是位置
然后搜索要从 n 开始,反过来搜
枚举位置的时候,加上一个 f 数组判重即可
没有任何剪枝,但如果你是从 1 开始你就能拿到 10 分的高分,TLE 9个点
证明我也不会,题解没讲,百度也没有
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; char s[][];
int f[],n;
void dfs(int x)
{
int i;
if (!x)
{
for (i=;i<=n;i++) puts(s[f[i]]);
exit();
}
for (i=;i<=n-x-;i++)
{
if (f[i]||f[i+x+]) continue;
f[i]=x;
f[i+x+]=x;
dfs(x-);
f[i]=;
f[i+x+]=;
}
}
int main()
{
freopen("flower.in","r",stdin);
freopen("flower.out","w",stdout);
int i;
scanf("%d\n",&n);
for (i=;i<=n;i++) gets(s[i]);
n*=;
dfs(n/);
return ;
}
一开始我还想成了DP题,以为只要往下和右转移就行,结果发现如果有墙而需要往上面或者左边绕的时候会得到0
后面回头看一眼数据范围12,显然DFS
不剪枝,每次向四周走,判断有没有墙和有没有超界,然后走过的地方要打标机,30 分
加第一个剪枝,如果当前已走步数大于答案,则不会再更行到答案,直接return,80分
加第二个剪枝,如果目标地点与当前地点之间最近的路线(不考虑墙,也就是abs(x-x_now)+abs(y-y_now)>ans)大于答案,也可以return,90分
加第三个剪枝(强行优化),先往右边走再往下边走,100分
最后一个剪枝就是这套题最坑的地方2333333
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; const int N=;
int n,m,mx,my,ans=,tot;
bool g[N][N],f[N][N];
void dfs(int x,int y,int dep)
{
if (x==mx&&y==my)
{
if (dep<ans)
{
ans=dep;
tot=;
}
else if (dep==ans) tot++;
return;
}
if (dep==ans||abs(mx-x)+dep>ans||abs(my-y)+dep>ans) return;
f[x][y]=;
if (y+<=m&&f[x][y+]==&&g[x][y+]) dfs(x,y+,dep+);
if (x+<=n&&f[x+][y]==&&g[x+][y]) dfs(x+,y,dep+);
if (x->&&f[x-][y]==&&g[x-][y]) dfs(x-,y,dep+);
if (y->&&f[x][y-]==&&g[x][y-]) dfs(x,y-,dep+);
f[x][y]=;
}
int main()
{
freopen("maze.in","r",stdin);
freopen("maze.out","w",stdout);
int i,j,c;
scanf("%d%d%d%d",&n,&m,&mx,&my);
for (i=;i<=n;i++)
for (j=;j<=m;j++)
{
scanf("%d",&c);
if (c==) g[i][j]=;
}
dfs(,,);
printf("%d\n",tot);
return ;
}
第三题是原题,我以前写过题解,具体请戳
http://www.cnblogs.com/hadilo/p/5746894.html
第四题是NOIP2003的第四题,我也写过题解
http://www.cnblogs.com/hadilo/p/5916654.html
就这么水过了,很森破啊~
搜索水题四连发_C++的更多相关文章
- 搜索 水题&&错误集锦
引子: 本以为搜索的题目老师也不会检查,结果今天早上loli慢悠悠的说:“请同学们提交一下搜索的题目~”,顿时心旌摇曳,却也只能装作镇定自若的样子,点了点头.. 然后就开始了今天的疯狂做题,虽说题目都 ...
- DP+贪心水题合集_C++
本文含有原创题,涉及版权利益问题,严禁转载,违者追究法律责任 本次是最后一篇免费的考试题解,以后的考试题目以及题解将会以付费的方式阅读,题目质量可以拿本次作为参考 本来半个月前就已经搞得差不多了,然后 ...
- hdu 1181:变形课(搜索水题)
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submis ...
- 【BZOJ3362-3365】USACO水题四连A
[BZOJ3362][Usaco2004 Feb]Navigation Nightmare 导航噩梦 Description 农夫约翰有N(2≤N≤40000)个农场,标号1到N,M(2≤M≤ ...
- hdu3786 Floyd或搜索 水题
题意: 找出直系亲属 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- uva 784 Maze Exploration 染色 搜索水题 DFS
染色问题,其实就是看看图上某一点能扩散多少. 用DFS解决,因为BFS不是很熟 =-=...以后要多练. 提交后32ms,优化了一下,在递归前进行判定,优化到22ms,不是优化的很好... 代码: # ...
- poj2386(dfs搜索水题)
Language:Default Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 42069 ...
- DFS水题 URAL 1152 False Mirrors
题目传送门 /* 题意:一个圈,每个点有怪兽,每一次射击能消灭它左右和自己,剩余的每只怪兽攻击 搜索水题:sum记录剩余的攻击总和,tot记录承受的伤害,当伤害超过ans时,结束,算是剪枝吧 回溯写挫 ...
- <hdu - 3999> The order of a Tree 水题 之 二叉搜索的数的先序输出
这里是杭电hdu上的链接:http://acm.hdu.edu.cn/showproblem.php?pid=3999 Problem Description: As we know,the sha ...
随机推荐
- laravels -- Swoole加速php
LaravelS是一个胶水项目,用于快速集成Swoole到Laravel,然后赋予它们更好的性能.更多可能性. 环境 : ubuntu16 + nginx + php7.1 + LaravelS搭建高 ...
- strak组件(10):批量操作
效果图: 批量删除只是一个例子,可以根据需求定制自己想要的批量操作. 新增函数 def get_action_list(self) 钩子方法,获取要处理的批量操作的函数 def action_mult ...
- caioj:1348: [NOIP普及组2012]质因数分解 C++
题目描述 已知正整数n是两个不同的质数的乘积,试求出两者中较大的那个质数. 输入样例 21 输出样例 7 输入 输入只有一行,包含一个正整数n. 输出 输出只有一行,包含一个正整数p,即较大的那个质数 ...
- C# 不同窗口传递参数
form1: private void button1_Click(object sender, System.EventArgs e) { Form2 frm = new Form2(); frm. ...
- HyperLedger Fabric 1.4 区块链技术发展(1.3)
区块链技术发展经历区块链1.0(数字货币).区块链2.0(数字资产与智能合约)和区块链3.0(各种行业分布式应用落地)三个阶段.区块链在应用上分为公有链(PublicBlockChains).联盟链( ...
- 13 KNN背景分割器
传统的前景背景分割方法有GrabCut,分水岭算法,当然也包括一些阈值分割的算法.但是这些算法在应用中往往显得鲁棒性较弱,达不到一个好的分割效果. 现代的背景分割算法融入了机器学习的一些方法来提高分类 ...
- Spring MVC重定向和转发
技术交流群:233513714 转发和重定向 开始Java EE时,可能会对转发(forward)和重定向(redirect)这个两个概念不清楚.本文先通过代码实例和运行结果图片感性 认识二者的区别, ...
- ASP.NET Core [1]:Hosting(笔记)
参考:http://www.cnblogs.com/RainingNight/p/hosting-in-asp-net-core.html
- python学习总结 --函数基础
函数基础 ### 函数简介 - 定义:具有特定功能的一段代码 - 优点: - 可以减少代码的重复书写 - 可以将功能的实现着和使用者分开,可以提高开发效率 - 分类: - 库函数:print.inpu ...
- windows版本cloudbase-init流程说明
源码流程说明 - 程序首先判断操作系统类型,加载对应的模块 - 加载服务,服务共分为四种: 'cloudbaseinit.metadata.services.httpservice.HttpServi ...