思路1.
当前为n的面积如何与n-1相联系,dp[i][j]=max(dp[i-1][k]) , 0<k<=j
描述:i为方块个数,j为高度
但是此题目的数据对于高度太变态,h,1000000000 ,n,100000
所以不可行(一般计算机为Ghz 相当于1S十几亿运算)
思路2.
此题目寻找的最大面积,对于一个方块来说则是以自己为中心左右两端比自己高
的方块累计和与自己面积的乘积,取最大值。状态转移则可看作已知前面n-1个左边比自己
高的的位置l[i],则如果该下标对应的数据比自己还高,继续往下找。利...
分类:
其他好文 时间:
2014-08-10 13:09:30
阅读次数:
278
http://poj.org/problem?id=1742题意:很多硬币,有价值和数量,给出一个上限,问上限内有多少种钱数可以由这些硬币组成。分析:好像是楼教主男人八题之一。然后学多重背包单调队列优化时看了别人的程序。。所以后来写了就1A了=。=前一篇小小总结了一下多重背包单调队列优化(http:...
分类:
其他好文 时间:
2014-08-06 18:10:41
阅读次数:
209
来源:http://poj.org/problem?id=3926题意:行n 2 #include 3 #include 4 using namespace std; 5 6 int n, m, k; 7 int a[120][10100], b[120][10100], dp[120][101.....
分类:
其他好文 时间:
2014-07-31 12:22:36
阅读次数:
269
dp转移方程很容易想 dp[i][j] = min{dp[i - 1][k] + abs(pos[i][j] -pos[i - 1][j]) + cost[i][j]}
n行m列 每次转移扫描m次 共n*m*m 为O(10^7) 1500ms,可以暴力一试。姿势不对就会TLE
其实加上个内联函数求绝对值,同时赋值时候不使用min(a, b) 用G++交 就可以水过
正解是:因...
分类:
其他好文 时间:
2014-07-12 19:55:08
阅读次数:
421
原题: UVA 1169 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3610大白书上的原题。代码:#include #include #include ...
分类:
其他好文 时间:
2014-07-07 15:09:20
阅读次数:
386
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1855题意:最近lxhgww又迷上了投资股票, 通过一段时间的观察和学习,他总结出了股票行情的一些规律。 通过一段时间的观察,lxhgww预测到了未来T天内某只股票的走势,第i天的股票买入价...
分类:
其他好文 时间:
2014-06-23 07:17:39
阅读次数:
722
单调队列优化DP。定义dp[i][j]表示第i天手中有j股股票时,获得的最多钱数。转移方程有:1.当天不买也不卖:
dp[i][j]=dp[i-1][j];2.当天买了j-k股: dp[i][j]=max(dp[r][k]+(j-k)*Ap[i]);
(r=1,所以i>w+1时才能转移,这是i#in...
分类:
其他好文 时间:
2014-06-02 20:03:15
阅读次数:
191
题目:
链接:点击打开链接
题意:
给出N种设备的价值和数量,怎样尽可能的平分。
算法:
多重背包。
思路:
1.转化为01背包解决。2.使用单调队列优化O(VN)算法。
代码:
法一:
#include
#include
#include
using namespace std;
int n;
int v[55],m[55];
int...
分类:
其他好文 时间:
2014-05-22 09:09:38
阅读次数:
205
根据题意,很明显可以推出DP方程。
假如只考虑向左的方向:
dp[t][i][j]: 第t个时间段末滑行到i,j最长滑行的距离。
dp[t][i][j]=dp[t-1][i][1..k]+(j-k)=dp[t-1][i][1..k]-k+j(k
最终时间复杂度为O(n*m*k)
#include
#include
#include
#include
#include
using nam...
分类:
其他好文 时间:
2014-05-07 04:49:13
阅读次数:
363
单调队列入门题。。。
dp[i][j]:第i天,手中拥有j个股票时,获得的最大利润。
若第i天不买不卖:dp[i][j]=max(dp[i][j],dp[i-1][j]);
若第i天买 :dp[i][j]=max(dp[i][j],dp[i-w-1][k]-(j-k)*ap[i]);
若第i天卖 :dp[i][j]=max(dp[i][j],dp...
分类:
其他好文 时间:
2014-05-04 09:13:22
阅读次数:
303