特别声明:以下题目有部分为原创题,涉及版权问题,不得转载,违者追究 法律责任!

  话说这是一套神题,只有你想不到,没有你做不到

  题目更正后比 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++的更多相关文章

  1. 搜索 水题&&错误集锦

    引子: 本以为搜索的题目老师也不会检查,结果今天早上loli慢悠悠的说:“请同学们提交一下搜索的题目~”,顿时心旌摇曳,却也只能装作镇定自若的样子,点了点头.. 然后就开始了今天的疯狂做题,虽说题目都 ...

  2. DP+贪心水题合集_C++

    本文含有原创题,涉及版权利益问题,严禁转载,违者追究法律责任 本次是最后一篇免费的考试题解,以后的考试题目以及题解将会以付费的方式阅读,题目质量可以拿本次作为参考 本来半个月前就已经搞得差不多了,然后 ...

  3. hdu 1181:变形课(搜索水题)

    变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submis ...

  4. 【BZOJ3362-3365】USACO水题四连A

    [BZOJ3362][Usaco2004 Feb]Navigation Nightmare 导航噩梦 Description     农夫约翰有N(2≤N≤40000)个农场,标号1到N,M(2≤M≤ ...

  5. hdu3786 Floyd或搜索 水题

    题意: 找出直系亲属 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. uva 784 Maze Exploration 染色 搜索水题 DFS

    染色问题,其实就是看看图上某一点能扩散多少. 用DFS解决,因为BFS不是很熟 =-=...以后要多练. 提交后32ms,优化了一下,在递归前进行判定,优化到22ms,不是优化的很好... 代码: # ...

  7. poj2386(dfs搜索水题)

    Language:Default Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 42069   ...

  8. DFS水题 URAL 1152 False Mirrors

    题目传送门 /* 题意:一个圈,每个点有怪兽,每一次射击能消灭它左右和自己,剩余的每只怪兽攻击 搜索水题:sum记录剩余的攻击总和,tot记录承受的伤害,当伤害超过ans时,结束,算是剪枝吧 回溯写挫 ...

  9. <hdu - 3999> The order of a Tree 水题 之 二叉搜索的数的先序输出

    这里是杭电hdu上的链接:http://acm.hdu.edu.cn/showproblem.php?pid=3999  Problem Description: As we know,the sha ...

随机推荐

  1. java 中实体Bean和Map互相转化

    技术交流群: 233513714 // 将一个map对象转化为bean public static void transMap2Bean(Map<String, Object> map, ...

  2. idea无法新建maven项目

    之前用的都是eclipse,自从4月底入职新公司后,接触到了idea. 然后自己的电脑上也安装了idea,不过一直都没用,直到昨天打算开起来使用一下. 之后就是想新建一个maven项目,发现死活也新建 ...

  3. Lambda与LINQ

    Lambda与LINQ写法对比: 上为Lambda 下为LINQ 显示指定列 Students.select(u=>(new {Name=u.Sname,Address=u.Saddress}) ...

  4. Web 开发的未来:React、Falcor 和 ES6

    Web 开发的未来:React.Falcor 和 ES6 Widen是一家数字资产管理解决方案提供商.目前,其技术栈还非常传统,包括服务器端的Java.浏览器端的AngularJS.提供REST AP ...

  5. 宝石TD迷宫设计器

    说起宝石TD,能追溯到我上高二那会,算来是2005年. 所谓一款TD类的魔兽RPG,宝石TD可以算是达到了TD迷宫的巅峰,三进三出更是别具匠心. 这个迷宫设计器是去年在焦作做的,只完成了迷宫设计功能, ...

  6. 最“高大上”的Spring测试:Spring Test

    我想给大家介绍一款非常实用.且高端大气上档次的spring测试,在这里,我要强烈推荐使用Spring的Test Context框架,为什么呢?俗话说,“货比三家不上当”,要搞清楚这个问题,我们先来看一 ...

  7. 剑指Offer - 九度1355 - 扑克牌顺子

    剑指Offer - 九度1355 - 扑克牌顺子2014-01-30 23:19 题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^). ...

  8. 《Cracking the Coding Interview》——第16章:线程与锁——题目6

    2014-04-27 20:25 题目:关于java中标有synchronized的成员方法? 解法:这代表同一个对象实例的synchronized方法不能被多个线程同时调用.注意有这么多个地方都加粗 ...

  9. 【Remove Duplicates from Sorted List 】cpp

    题目: 第一次刷的时候漏掉了这道题. Given a sorted linked list, delete all duplicates such that each element appear o ...

  10. js实现类bootstrap模态框动画

    在pc端开发,模态框是一个很常用的插件,之前一直用的第三方插件,比如bootstrap,jQuery的模态框插件,最近还用了elementUI的.但是会发现其实动画效果都差不多,那么如何去实现这样一个 ...