/*
bfs宽度遍历
--------------------------------------------------------------------------
对人和火同时进行bfs,,注意应该先火后人,即如果在人到达该格子前,格子已经着火
则不应该走,最后人走到边界无路可走,则IMPOSSIBLE!!!!!!!!!!!!
-------------------------------...
分类:
其他好文 时间:
2014-08-08 21:24:16
阅读次数:
269
【题意】n*m的土地里每个格子里可以种树或者施肥,每一棵树开始可以结一颗果子,他的前后左右四个格子,若施了肥就可以让他结的果翻一倍,求最多可以得到多少果子。在每个(i+j)%2==0 的格子上种树 其他的施肥就可以了。 1 #include 2 #include 3 #include 4 using...
分类:
其他好文 时间:
2014-08-08 17:33:06
阅读次数:
154
题目:hdu4925Apple Tree(找规律)
题目大意:给出N* M 的矩阵,然后每个格子要不种苹果,要不施肥:在(X,Y)施肥后,它上下左右的苹果树的产量会翻倍。种了苹果数,产量为1.求这样的N * M个矩阵能得到的最大的苹果数。
解题思路:
对于2 * 2的矩阵: X代表施肥 , 有数字代表种树 X 2 这样是最好的。各自上的数字...
分类:
移动开发 时间:
2014-08-08 12:50:25
阅读次数:
205
这题 自己没做出来啊 擦看了别人的解题报告 才发现自己读错题了 草。。。我理解成( i , j )周围的4个格子不能取 。。。 题目给的图 都没有仔细看那就懒得分析了 直接贴下别人的 自己的思维也被定势了 不能有新的做法了 ---传送---touch me注意将 数组开大点。。。其实 这题就是求 每...
分类:
其他好文 时间:
2014-08-08 01:55:35
阅读次数:
180
HDU 4923 Room and Moor
题意:给出A序列 求满足题目所写的B序列 使得方差最小
思路:可以想到最后的结果中 B序列的值一定是一段一段的 那么我们可以类似贪心去搞 对于一段序列我们可以求出什么样的b值使得方差最小 即序列中1的个数除以序列长度 又因为B是单调的 可以用一个单调栈去模拟 复杂度远远小于n^2 不要被吓怕…
HDU 4925 Apple Tree
题意:n*m的格子 要么种苹果 要么施化肥 施肥后的格子的相邻格子如果种了苹果 则苹果数翻倍 问最多...
分类:
其他好文 时间:
2014-08-07 23:21:55
阅读次数:
339
HDU 4925 Apple Tree
题目链接
题意:给一个m*n矩阵种树,每个位置可以选择种树或者施肥,如果种上去的位置就不能施肥,如果施肥则能让周围果树产量乘2,问最大收益
思路:推理得到肯定是果树和肥料交叉种好,类似国际象棋棋盘,黑的种,白的施肥,由于格子数不多,直接去枚举每个位置即可。如果题目格子数多的话,其实也可以推出公式一步得到答案
代码:
#inclu...
分类:
移动开发 时间:
2014-08-07 23:16:45
阅读次数:
324
题意:n*m网格中种苹果,每个网格要么施肥,要么种一个苹果,每个种苹果的格子,如果它的上下左右有各自有施肥的话,每有一个,苹果数量*2,求怎么种使得苹果数量最多。
思路:交叉种植,即黑白染色法可得到最优解。注意特判当n=m=1时的情况。
#include
#include
#include
#include
using namespace std;
const in...
分类:
移动开发 时间:
2014-08-07 23:12:55
阅读次数:
294
题目链接题意 : 给你一块n×m的矩阵,每一个格子可以施肥或者是种苹果,种一颗苹果可以得到一个苹果,但是如果你在一个格子上施了肥,那么所有与该格子相邻(指上下左右)的有苹果树的地方最后得到的苹果是两倍,如果(i,j)有一颗苹果树,(i-1,j)与(i,j+1)施了肥,那么苹果应该是1的两倍2,2的两...
分类:
移动开发 时间:
2014-08-07 22:40:15
阅读次数:
278
8皇后问题相信大家都听说过:在一个8*8格子的矩形里,放上8个皇后,如果在同一直线上(横,竖,(左右)斜线)存在两个皇后,他们就互相攻击了,现在要我们来求一共有多少种摆法,让他们相安无事!一般的解法都是回溯法,一步一步的试探,不行就返回再来,这样做时间效率很低,2的64次方,今天我介绍的是全排列法解...
分类:
其他好文 时间:
2014-08-07 18:33:40
阅读次数:
256
题意:
有N * N个格子,每个格子里有正数或者0,从最左上角往最右下角走,只能向下和向右,一共走两次(即从左上角走到右下角走两趟),把所有经过的格子的数加起来,求最大值SUM,且两次如果经过同一个格子,则最后总和SUM中该格子的计数只加一次。
走两次,所以状态表示要同时表示两次路径。dp[i][j][k][l] 表示第一次走到i, j,第二次走到k, l得到的最大值,这里i + j...
分类:
其他好文 时间:
2014-08-07 13:23:30
阅读次数:
224