题意:

给你一个矩阵 ,你能往各个方向走(不走出去就行),每次只能上下左右走一格,问路径上的点权最大值和最小值的差最小是多少。

思路:

首先 二分最后的答案,

暴力枚举当前的区间是啥。

DFS 就OK 了

(我的代码可能有点儿小问题…… 枚举的时候没有判左上角的点)

(但是AC了哈哈哈)

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,Map[105][105],a[105][105],maxx=0,minn=120,Right,Left,Mid,ans;
int xx[]={1,-1,0,0},yy[]={0,0,1,-1};
bool vis[105][105];
bool dfs(int x,int y,int Maxx,int Minn){
// printf("%d %d\n",x,y);
if(x==n&&y==n)return 1;
for(int i=0;i<=3;i++){
if(!vis[x+xx[i]][y+yy[i]]){
vis[x+xx[i]][y+yy[i]]=1;
if(a[x+xx[i]][y+yy[i]]>Maxx&&a[x+xx[i]][y+yy[i]]-Minn<=Mid){
if(dfs(x+xx[i],y+yy[i],a[x+xx[i]][y+yy[i]],Minn))return 1;
}
else if(a[x+xx[i]][y+yy[i]]<Minn&&Maxx-a[x+xx[i]][y+yy[i]]<=Mid){
if(dfs(x+xx[i],y+yy[i],Maxx,a[x+xx[i]][y+yy[i]]))return 1;
}
else if(a[x+xx[i]][y+yy[i]]>=Minn&&a[x+xx[i]][y+yy[i]]<=Maxx){
if(dfs(x+xx[i],y+yy[i],Maxx,Minn))return 1;
}
}
}
return 0;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%d",&Map[i][j]);
maxx=max(maxx,Map[i][j]);
minn=min(minn,Map[i][j]);
}
}
Right=100;Left=0;
while(Left<=Right){
// printf("%d %d\n",Left,Right);
Mid=(Left+Right)/2;int f=0;
for(int ii=minn;ii<=maxx;ii++){
memset(vis,0,sizeof(vis));memset(a,0xcf,sizeof(a));
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(Map[i][j]<=ii+Mid&&Map[i][j]>=ii){
a[i][j]=Map[i][j];
}
}
}
if(dfs(1,1,Map[1][1],Map[1][1]))f=1;
}
if(f)Right=Mid-1,ans=Mid;
else Left=Mid+1;
}
printf("%d\n",ans);
}

POJ 2110 二分+暴搜的更多相关文章

  1. poj 3080 Blue Jeans(水题 暴搜)

    题目:http://poj.org/problem?id=3080 水题,暴搜 #include <iostream> #include<cstdio> #include< ...

  2. hdu 4400 离散化+二分+BFS(暴搜剪枝还超时的时候可以借鉴一下)

    Mines Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  3. POJ 1945 暴搜+打表 (Or 暴搜+判重)

    思路: 呃呃 暴搜+打表 暴搜的程序::稳稳的TLE+MLE (但是我们可以用来打表) 然后我们就可以打表过了 hiahiahia 可以证明最小的那个数不会超过200(怎么证明的我也不知道),然后就直 ...

  4. [POJ 1204]Word Puzzles(Trie树暴搜&amp;AC自己主动机)

    Description Word puzzles are usually simple and very entertaining for all ages. They are so entertai ...

  5. POJ 1414 暴搜

    题意比较复杂 (但是很好理解) 大概意思是给你等边三角形(详见题目中的图). 最后一行有n个数,下一次要填的数是c. 里面预先已经填好了数字.(0为未填) 得分的标准是这个分数的连通块周围没有空的地方 ...

  6. POJ 3188暴搜

    题意: 思路: 裸的暴搜 --. 但是要注意如果你不用所有的按键就能输出最优解的话一定要把所有的字母都安排到一个位置-. 我的一群PE就是这么来的-- 为什么写的人这么少-- // by Sirius ...

  7. POJ 2132 暴搜OR Floyd

    题意: 给你一个邻接矩阵(n<=25)问所有1到2路径的gcd的lcm是多少. 一些经验(WA/TLE的经验): 1. 无脑暴搜 是会TLE的--. 2. 关于精度 dyf神牛说了:long l ...

  8. POJ 2133 暴搜

    题意: 思路: 按照题意暴搜 注意 如果目标串==给的串 答案是2 //By SiriurRen #include <cstdio> #include <cstring> #i ...

  9. 模拟 + 暴搜 --- Help Me with the Game

    Help Me with the Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3175   Accepted: ...

随机推荐

  1. java结合jQuery.ajax实现左右菜单联动刷新列表内容

    http://域名/一级菜单ID-二级菜单ID/ 用这种URL请求页面,出现如图所看到的内容: 该页面包括四部分,顶部文件夹+左側菜单+右側菜单+右下側数据列表. 左側菜单包括一级菜单和二级菜单,点击 ...

  2. codeblocks开源的c、c++编译器,小巧方便

    1.下载带gun的版本 2.设置编译的位置 3.创建项目 4.执行项目 有意思的开源的c编译器 ~~~

  3. poj--3250--Bad Hair Day(模拟)

    Bad Hair Day Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Submit ...

  4. httputil用http获取请求的工具类

    package com.xiaocan.demo.util; import java.io.IOException; import java.io.InputStream; import java.u ...

  5. HDU 4609 FFT+各种分类讨论

    思路: http://www.cnblogs.com/kuangbin/archive/2013/07/24/3210565.html 其实我是懒得写了.... 一定要define int long ...

  6. BZOJ 2588 主席树

    思路: 主席树 做完BZOJ 3123 觉得这是道水啊-- 然后狂RE 狂MLE 要来数据 忘把deep[1]设成1了----------. 啊wocccccccccccccccc //By Siri ...

  7. C# 实现ADSL自动断网和拨号(适用于拨号用户)

    using System;using System.Runtime.InteropServices; public struct RASCONN{    public int dwSize;    p ...

  8. Photoshop CC (2015.5) 2016.6 版已发布

    Photoshop CC (2015.5) 2016.6 版已发布 adobe-cc-no-more-direct-download-links.html 不再有直接下载的升级包了,不开心 :( 下载 ...

  9. UWP连接mysql 实现数据远程备份

    昨晚吃饭的时候突然觉得我们这个UWP应该添个数据备份的功能,不然换手机,换电脑之后数据库就全没了... 一开始是想用微软提供的AZURE的,没想到这玩意又没什么资料而且申请试用的时候还让我交身份证照片 ...

  10. HDU 3342 Legal or Not【拓扑排序】

    题意:给出n,m,人的编号为 0到n-1,再给出m个关系,问能不能够进行拓扑排序 #include<iostream> #include<cstdio> #include< ...