HDU
来源:互联网 发布:淘宝八斗学长考研资料 编辑:程序博客网 时间:2024/06/02 06:31
开始理解错了题意,以为是比海平面低就会被淹,而这是一个实际问题,如果过了防护堤才能淹到。
所以要遍历一次水走过的部分把这部分标记,然后遍历一个未被淹到的,是否能深搜所有节点。
顺便提一下二分是错误的,对,那个二分是错的。
5 55 5 5 5 74 1 1 1 44 1 2 1 17 1 0 0 47 3 4 4 4这组测试数据结果应该是1,二分是3,后台数据太水,所以他能过。
参考别人的代码:
#include "stdio.h"#include "string.h"#define MIN(a, b) ((a)<(b)?(a):(b))int n, m;int map[100][100];int over[100][100];int h;int all;int d[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};void init(){int i, j;h = 0;for(i=0; i<n; i++)for(j=0; j<m; j++){scanf("%d", &map[i][j]);if(map[i][j]>h)h = map[i][j];}}int border(int* u, int* v, int l){int i, j;for(i=0; i<n; i++){if(!over[i][0] && l >= map[i][0]){*u = i;*v = 0;return 1;}if(!over[i][m-1] && l >= map[i][m-1]){*u = i;*v = m-1;return 1;}}for(j=0; j<m; j++){if(!over[0][j] && l >= map[0][j]){*u = 0;*v = j;return 1;}if(!over[n-1][j] && l >= map[n-1][j]){*u = n-1;*v = j;return 1;}}return 0;}void DFS(int u, int v, int l){int i;int nu, nv;over[u][v] = 1;all--;for(i=0; i<4; i++){nu = u + d[i][0];nv = v + d[i][1];if(nu>=0 && nv>=0 && nu<n && nv<m && map[nu][nv]<=l && !over[nu][nv])DFS(nu, nv, l);}}void DFS_N(int u, int v){int i;int nu, nv;over[u][v] = 1;all--;for(i=0; i<4; i++){nu = u + d[i][0];nv = v + d[i][1];if(nu>=0 && nv>=0 && nu<n && nv<m && !over[nu][nv])DFS_N(nu, nv);}}int main(){int c;int i, j;int u, v;int k;int mark;//freopen("in.txt", "r", stdin);c = 0;while(scanf("%d %d", &n, &m), n+m){c++;init();all = 0;for(k=0; k<h; k++){memset(over, 0, sizeof(over));all = n*m;while(border(&u, &v, k))DFS(u, v, k);mark = 0;for(i=0; i<n; i++){for(j=0; j<m; j++)if(!over[i][j]){mark = 1;break;}if(mark)break;}if(mark)DFS_N(i, j);if(all)break;}if(all)printf("Case %d: Island splits when ocean rises %d feet.", c, k);elseprintf("Case %d: Island never splits.", c);printf("\n");}}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- mybatis学习之高级映射中的一对多查询
- arp脚本
- 关于SSM中的逆向工程
- android自定义圆角imageview学习
- Studio多渠道打包
- HDU
- 使用SharedPreferences存储来设置程序第一次进入欢迎界面,以后不会再进入欢迎界面
- jdbc用ResultSet.relative分页时报错java.sql.SQLException: 没有当前行: relative
- 【linux 软件安装】nginx 安装
- 剑指offer面试题[9-1]-跳台阶
- 保费相关科目核算
- 实现ajax异步请求笔记
- 【linux 软件安装】linux 安装tomcat
- iOS 点击事件传递及响应