题意:

      给你一个岛,然后岛的外侧开始涨水(内侧不涨只有外侧,也就是里面的0永远是0),问最少涨水多少才能把岛分成两个或者两个以上。

思路:

      可以二分枚举水的高度(数据不大估计暴力也能过),然后搜索,先把水能覆盖的全都标记上,然后在搜索,看看标记完水之后还有几个岛屿。

#include<stdio.h>
#include<string.h> #define N 111
#define INF 1000000000

int
map[N][N];
int
mark[N][N];
int
dir[4][2] = {0 ,1 ,0 ,-1 ,1 ,0 ,-1 ,0};
int
n ,m; int ok (int x ,int y)
{
return
x <= n && x >= 1 && y <= m && y >= 1 && !mark[x][y];
} void
DFS(int x ,int y ,int now)
{

mark[x][y] = 1;
for(int
i = 0 ;i < 4 ;i ++)
{
int
xx = x + dir[i][0];
int
yy = y + dir[i][1];
if(
ok(xx ,yy) && now >= map[xx][yy]) DFS(xx ,yy ,now);
}
} int
get_sum(int now)
{
int
i ,j ,sum;
memset(mark ,0 ,sizeof(mark));
for(
i = 1 ;i <= n ;i ++)
{
if(
now >= map[i][1] && !mark[i][1]) DFS(i ,1 ,now);
if(
now >= map[i][m] && !mark[i][m]) DFS(i ,m ,now);
}
for(
i = 1 ;i <= m ;i ++)
{
if(
now >= map[1][i] && !mark[1][i]) DFS(1 ,i ,now);
if(
now >= map[n][i] && !mark[n][i]) DFS(n ,i ,now);
} for(
sum = 0 ,i = 1 ;i <= n ;i ++)
for(
j = 1 ;j <= m ;j ++)
if(!
mark[i][j])
{

sum ++;
DFS(i ,j ,INF);
}
return
sum;
} int main ()
{
int
i ,j ,ans ,cas = 1;
int
low ,up ,mid;
while(~
scanf("%d %d" ,&n ,&m) && n + m)
{
for(
up = -1 ,i = 1 ;i <= n ;i ++)
for(
j = 1 ;j <= m ;j ++)
{

scanf("%d" ,&map[i][j]);
if(
i == 1 || i == n || j == 1 || j == m)
up = up < map[i][j] ? map[i][j] : up;
}

low = 0 ,ans = -1;
while(
low <= up)
{

mid = (low + up) >> 1;
int
now = get_sum(mid);
if(
now >= 2)
{

ans = mid;
up = mid - 1;
}
else
low = mid + 1;
}

printf("Case %d: " ,cas ++);
ans == -1 ? puts("Island never splits.") : printf("Island splits when ocean rises %d feet.\n" ,ans);
}
return
0;
}

hdu3329 二分+搜索的更多相关文章

  1. $CF912E\ Prime\ Gift$ 二分+搜索

    正解:二分+搜索 解题报告: 传送门$QwQ$ 因为翻译真的很$umm$所以还是写下题目大意$QwQ$,就说给定一个大小为$n$的素数集合,求出分解后只含这些质数因子的第$K$小整数 考虑先把质数分两 ...

  2. (四连测)滑雪场的高度差题解---二分 + 搜索---DD(XYX)​​​​​​​的博客

    滑雪场的高度差 时间限制: 1 Sec  内存限制: 128 MB 题目描述 滑雪场可以看成M x N的网格状山地(1 <= M,N <= 500),每个网格是一个近似的平面,具有水平高度 ...

  3. HDU 6041 I Curse Myself(二分+搜索)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6041 [题目大意] 给出一个仙人掌图,求第k小生成树 [题解] 首先找到仙人掌图上的环,现在的问题 ...

  4. [luogu2329 SCOI2005] 栅栏(二分+搜索)

    传送门 Solution 纯搜索80分,加二分90分,再补一个小剪枝满分qwq 真.小剪枝:如果下一个的需求和当前相同,那么不需要再次从头开始试(看代码就明白了233) Code #include & ...

  5. 【题解】SOFTWARE 二分+搜索/dp

    题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块,由公司里的技术人员分工完成,每个技术人员完成同一软件的不同模块的所用的天数是 ...

  6. [BZOJ1082][SCOI2005]栅栏 二分+搜索减枝

    1082: [SCOI2005]栅栏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2430  Solved: 1034[Submit][Status ...

  7. bzoj1082: [SCOI2005]栅栏(二分答案搜索判断)

    1082: [SCOI2005]栅栏 题目:传送门 题解: 是不是一开始在想DP?本蒟蒻也是qwq,结果很nice的错了ORZ 正解:二分+搜索 我们可以先把两种木材都进行排序,那么如果需要的最大木材 ...

  8. POJ2349二分+并查集,类似最小树的贪心

    题意:       给你n个点,你的任务是构建一颗通讯树,然后给你一个s表示可以选出来s个点两两通讯不花钱,就是费用是0,其他的费用就是两点的距离,有个要求就是其他的费用中最大的那个最小. 思路:   ...

  9. 【bzoj1082】 SCOI2005—栅栏

    http://www.lydsy.com/JudgeOnline/problem.php?id=1082 (题目链接) 题意 给出m块木柴,以及n块木板,要求将m块木柴做木板,要求将木柴切割成与木板一 ...

随机推荐

  1. python torndb模块

    一.torndb概述 torndb是一个轻量级的基于MySQLdb封装的一个模块,其是tornado框架的一部分.其项目主页为:https://github.com/bdarnell/torndb . ...

  2. 在 .NET Core 中构建 REST API

    翻译自 Camilo Reyes 2020年8月26日的文章 <Build a REST API in .NET Core> [1] REST API 可以使用简单的动词(如 POST.P ...

  3. 让你弄懂js中的闭包

    目录 闭包 闭包如何产生 闭包是什么 常见的闭包 闭包的作用 闭包的生命周期 闭包的应用 闭包的缺点 内存泄露 内存溢出 闭包面试题 闭包 之前在我执行上下文执行上下文栈这篇文章中,出现了这样一个题目 ...

  4. 剪切DOM节点中断transition执行【问题】

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. 「HTML+CSS」--自定义按钮样式【001】

    前言 Hello!小伙伴! 首先非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 哈哈 自我介绍一下 昵称:海轰 标签:程序猿一只|C++选手|学生 简介:因C语言结识编程,随后转入计算机 ...

  6. linux程序开机自动启动

    linux如果需要实现开机启动, 可以找到 $HOME/.config/autostart 目录(没有的话新建一个),在该文件夹下创建一个空文件,文件名自拟,后缀必须是desktop,如:dingda ...

  7. java例题_35 找到最大值和最小值并交换位置

    1 /*35 [程序 35 最大最小交换] 2 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组. 3 */ 4 5 /*分析 6 * 1.先初始化一个数组,然后从键盘获得值 ...

  8. Shell中的(),{}几种语法用法-单独总结

    shell中的(),{}几种语法用法 查看脚本语法是否有错误: bash -n modify_suffix.sh 跟踪执行 sh -x modify_suffix.sh aaa 1. ${var} 2 ...

  9. Dynamics CRM安装教程四:DNS配置

    在为MS CRM 配置Claims-based认证之前,你需要在域控服务器的DNS中添加一些记录,来解析CRM的各个断点,添加內容如下(本次环境全部安装在一台机子中): AD FS 服务器(例: ad ...

  10. UnitThreeSummary

    目录 一.JML的梳理与总结 二.SMT Solver的部署与验证 三.JMLUnitNG的部署与测试 四.作业的设计与总结 第一次作业 第二次作业 第三次作业 五.BUG 六.总结与反思 一.JML ...