hdu1505】的更多相关文章

//Accepted 5196 KB 109 ms //类似hdu1506 //输入数据的格式没有明确的限制 //可能出现以下情况 //5 5 //R //F //F F F //F F F F F //R R R //R R //R F R F R //R R R R R #include <cstdio> #include <cstring> #include <iostream> using namespace std; ; bool map[imax_n][im…
the main algorithm as the 1506 #include <stdio.h> #include <iostream> #include <string> using namespace std; ][]; ][]; int m,n; int find(int a){ int i,j,res,max; int t; ],r[]; l[]=; r[m]=m; ;i<=m;++i){ t=i; ){ l[i]=i; continue; } &…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1505 分析: 这题是HDU 1506 的加强版,定义一个二维数组,d[i][j]表示第i行j列元素在前i行中的最大高度.(以第一行为底)例如测试样例: 0 1 1 1 1 1                                                 0 1 1 1 1 1 1 1 1 1 1 1           (F=1,R=0,方便求和)        1 2 2 2 2…
写了1506顺便写下1505.. 还是求矩形面积,不过要预处理一下以每一个F为底的高度,然后想左右扩展到最大长度即为矩形的长.. 计算方法有点绕,令l[i]表示i的左边界,那么初始化l[i] = i. 假设我们在第n行 每次向左跳 判断 h[j]是否小于或等于h[l[j] - 1],换句话说就是当前左边界已经满足小于关系了,我们再往左看一个长度,看是否还是满足小于或等于的关系 如果满足 则有l[j] = l[l[j]-1],可以理解为当前左边界往左一位满足条件,我们看左边界往左一位的左边界再往左…
题意: 给出一个像这样的矩阵 R F F F F F F F F F F F R R R F F F     F F F F F F F F F F F F 求F组成的最大子矩阵(面积最大) 有多组数据 优秀的暴力??? 思路:枚举每个点 然后这个点可以往上延伸到最上的点 这两点为一根线 这根线左移移到最左可以到的地方 右边也是如此 然后算出面积 需要预处理出每个点往左延伸的最远点与往右延伸的最远点 code #include<iostream> #include<cstdio>…
昨天打 CF又跪了.近期睡不好睡不好睡不好-感觉整个人都累傻了,根本无办法写下去,只写了一题签到题就跪了orz..从未试过这么悲剧. 今天早上凭着我的意念("怨念").七点又起来了! 我已经连续好多天七点自己主动起来(不是自然醒.是意念,是意念....),刷啊刷啊刷dp. 今天刷的是昨天的加强版.实际上就多了一个for循环.和做高度处理,不直到是不是正解(  ╮(╯▽╰)╭ ),可是AC就好了... 经过多次调试我的shell脚本,这个acm.sh算是比較稳定了,还差一个自己主动提交机…
题意:        给你一个矩阵,让你在里面找到一个最大的f矩阵.. 思路:       三种方法ac这到题目;  方法(1) 以宽为主,暴力    开一个数组sum[i][j],记录当前这个位置的前面有多少个连续的f,更新完这个数组时候在枚举每一个点,只处理最后一列或者sum[i][j+1] =0 的点,因为只有这样的点才可能是最大的,对于每一个要处理的点,直接往上跑和往下跑,跑的条件是sum[i][j] <= sum[k][j] (k是上跑或下跑的数),然后找到一共跑了多少个,当前的最大就…
1.Robberies 连接 :http://acm.hdu.edu.cn/showproblem.php?pid=2955     背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱  最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋);    正确的方程是:f[j]=max(f[j],f[j-q[i].money]*q[i…
常见优化 单调队列 形式 dp[i]=min{f(k)} dp[i]=max{f(k)} 要求 f(k)是关于k的函数 k的范围和i有关 转移方法 维护一个单调递增(减)的队列,可以在两头弹出元素,一头压入元素. 队列中维护的是两个值.一个是位置,这和k的范围有关系,另外一个是f(k)的值,这个用来维护单调性,当然如果f(k)的值可以利用dp值在O(1)的时间内计算出来的话队列中可以只维护一个表示位置的变量. 枚举到一个i的时候,首先判断队首元素的位置是否已经不满足k的范围了,如果不满足就将队首…
hdu1505:http://acm.hdu.edu.cn/showproblem.php?pid=1505 题解:给你一个字符矩阵,里面有R和F两种字符,然后让你找一个最大的子矩阵,这个最大的子矩阵只含有F. 题解:在队友的提示下和上一题的影响,我先处理出每一行,以该行为起点的连续F的高度,然后每一行的情况问题就转化成上一题的问题,然后枚举每一行就可以了. #include<iostream> #include<cstdio> #include<cstring> #i…