hiho #1310 : 岛屿 (dfs,hash)】的更多相关文章

题目2 : 岛屿 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给你一张某一海域卫星照片,你需要统计: 1. 照片中海岛的数目 2. 照片中面积不同的海岛数目 3. 照片中形状不同的海盗数目 其中海域的照片如下,"."表示海洋,"#"表示陆地.在"上下左右"四个方向上连在一起的一片陆地组成一座岛屿. .####.. .....#. ####.#. .....#. ..##.#. 上图所示的照片中一共有4座岛屿:其中…
#1310 : 岛屿 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给你一张某一海域卫星照片,你需要统计: 1. 照片中海岛的数目 2. 照片中面积不同的海岛数目 3. 照片中形状不同的海盗数目 其中海域的照片如下,"."表示海洋,"#"表示陆地.在"上下左右"四个方向上连在一起的一片陆地组成一座岛屿. .####.. .....#. ####.#. .....#. ..##.#. 上图所示的照片中一共有4座岛屿:…
思路:首先dfs求得所有联通块,再搜索的同时把每个联通块的坐标都保存下来,然后把每个联通块处理一下–首先得到某个联通块的最小横坐标和纵坐标,然后让每个坐标去减去这个横坐标和纵坐标.相当于使得所有联通块都位于左上角了,然后再对坐标按照x和y排序就可以保证相同的联通块的所有坐标都一致. 后来想了一下,其实可以不排序,因为我们都是两层循环枚举一个点来进行扩展的,如果两个联通块(岛屿)形状一致,那么每次开始搜索的起点都是同一个位置,并且搜索时保证方向一直是(上下左右或则其他),只要保证方向不变那么就不需…
折半搜索,map会T所以用hash表来存状态 #include<iostream> #include<cstdio> #include<map> using namespace std; const int N=10,mod=739391; int n,m,k[N],p[N],w,a[155][N],h[1000005],cnt; long long ans; map<int,int>mp; struct qwe { int ne,to,va; }e[400…
USACO ORZ Time Limit: 5000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description Like everyone, cows enjoy variety. Their current fancy is new shapes for pastures. The old rectangular shapes are out of favor; new geom…
题目链接 H公司有 N 台服务器,编号1~N,组成了一个树形结构.其中中央服务器处于根节点,终端服务器处于叶子节点. 中央服务器会向终端服务器发送消息.一条消息会通过中间节点,到达所有的终端服务器.消息每经过一台服务器(包括根节点的中央服务器和叶子节点的终端服务器),就会被处理并存储下来,其中编号为 i 的服务器,执行处理和存储这个过程会花费 Ai 毫秒的时间.消息从一台服务器传输到另一台服务器的时间可以忽略不计. 由于 Ai 各不相同,从中央服务器发出消息到各个终端处理并储存完毕的时间也是不相…
dfs算法是深度搜索算法.从某一节点开始遍历直至到路径底部,如果不是所寻找的,则回溯到上个节点后,再遍历其他路径.不断重复这个过程.一般此过程消耗很大,需要一些优化才能保持算法的高效. hdu1010:(奇偶剪枝) 主要题意是一只小狗为了一块骨头,然后进入迷宫.当它拿起骨头的时候,迷宫开始下沉.小狗才发这迷宫是个陷阱.这迷宫只有一个门,小狗只能在规定时间内跑到到门这里才能顺利出逃.另外,小狗每跑过一块,该块就会下沉.因此不能过早或者过晚到门.(题目挺有意思) 刚开始刷题时,没有用剪枝,超时了.使…
题意 找如下子串的个数: (l,r)是回文串,并且(l,(l+r)/2)也是回文串 思路 本来写了个回文树+dfs+hash,由于用了map所以T了 后来发现既然该子串和该子串的前半部分都是回文串,所以该子串的前半部分和后半部分是本质相同的! 于是这个log就去掉了 代码 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring>…
题目: 假设你设计一个游戏,用一个 m 行 n 列的 2D 网格来存储你的游戏地图. 起始的时候,每个格子的地形都被默认标记为「水」.我们可以通过使用 addLand 进行操作,将位置 (row, col) 的「水」变成「陆地」. 你将会被给定一个列表,来记录所有需要被操作的位置,然后你需要返回计算出来 每次 addLand 操作后岛屿的数量. 注意:一个岛的定义是被「水」包围的「陆地」,通过水平方向或者垂直方向上相邻的陆地连接而成.你可以假设地图网格的四边均被无边无际的「水」所包围. 请仔细阅…
题目链接:https://uva.onlinejudge.org/external/101/10118.pdf 参考:http://www.cnblogs.com/kedebug/archive/2013/04/07/3006493.html 刚开始,我想到了dp状态的描叙,d(a,b,c,d) 从 4堆里面拿走 a,b,c,d 的最优值,但是好难实现啊,dp顺序感觉是可以用LCS的方案,但是,怎么保存自己口袋里面有哪些呢? ——hash. 最后参考了一下大神的方案,记忆化写的,Orz. 嗯,像…