[USACO2004][poj2373]Dividing the Path(DP+单调队列)
2014-03-10 23:07
204 查看
http://poj.org/problem?id=2373
题意:一条直线分割成N(<=25000)块田,有一群奶牛会在其固定区域吃草,每1把雨伞可以遮住向左右延伸各A到B的区域,一只奶牛吃草区域内不允许有雨伞间隙,即只能被1把雨伞覆盖,求将n块田都覆盖的最少雨伞数。
分析:
易写出dp式子,dp[i]表示覆盖[0,i]需要的最少雨伞数量——
若i不为某一奶牛的领地:dp[i]=min(dp[j])+1,i-2b<=j<=1-2a,且j不属于某一只奶牛的领地
若i为某一奶牛的领地:dp[i]=inf
这里面临两个问题:
1、Q:如何快速处理处牛的领地,即我们如何快速知道哪些点要跳过哪些点要进行dp?
A:对于读入的Bi和Ei,我们可以A[Bi]=-1,A[Ei+1]=1,从而可以通过前缀和快速判断每个位置是否是奶牛的领地
2、Q:如何快速的找出i-2b<=j<=i-2a中的最小值
A:鉴于a,b都是常数,所以这题当然可以用单调队列撸
题意:一条直线分割成N(<=25000)块田,有一群奶牛会在其固定区域吃草,每1把雨伞可以遮住向左右延伸各A到B的区域,一只奶牛吃草区域内不允许有雨伞间隙,即只能被1把雨伞覆盖,求将n块田都覆盖的最少雨伞数。
分析:
易写出dp式子,dp[i]表示覆盖[0,i]需要的最少雨伞数量——
若i不为某一奶牛的领地:dp[i]=min(dp[j])+1,i-2b<=j<=1-2a,且j不属于某一只奶牛的领地
若i为某一奶牛的领地:dp[i]=inf
这里面临两个问题:
1、Q:如何快速处理处牛的领地,即我们如何快速知道哪些点要跳过哪些点要进行dp?
A:对于读入的Bi和Ei,我们可以A[Bi]=-1,A[Ei+1]=1,从而可以通过前缀和快速判断每个位置是否是奶牛的领地
2、Q:如何快速的找出i-2b<=j<=i-2a中的最小值
A:鉴于a,b都是常数,所以这题当然可以用单调队列撸
相关文章推荐
- 【poj2373】Dividing the Path【单调队列优化dp】
- poj2373 Dividing the Path 单调队列dp
- poj 2373 Dividing the Path(dp+单调队列优化)
- POJ 2373 (Dividing the Path)单调队列优化DP
- BZOJ1986: [USACO2004 Dec] Dividing the Path 划区灌溉
- POJ 2373 Dividing the Path(队列dp)
- POJ - 3017 Cut the Sequence(单调队列+dp)
- 【bzoj2442】【Usaco2011 Open】修剪草坪【dp+单调队列】
- poj 3017 Cut the Sequence(DP+单调队列+set)
- hdu 1171 Dividing 单调队列优化dp
- POJ2373 Dividing the Path——动态规划+单调队列优化
- 20152016-acmicpc-neerc-northern-subregional-contest J:Journey to the "The World's Start"(单调队列+DP+二分)
- [BZOJ2442][Usaco2011 Open]修剪草坪 dp+单调队列优化
- hdu 4328 cut the cake#单调队列#DP
- POJ Cut the Sequence 单调队列优化DP入门题
- BZOJ 2442[Usaco2011 Open] 修剪草坪 (dp+单调队列)
- BZOJ_1915_[Usaco2010 Open]奶牛的跳格子游戏_DP+单调队列
- 【bzoj 2442】【codevs 4654】[Usaco2011 Open]修剪草坪(dp+单调队列)
- bzoj 3367: [Usaco2004 Feb]The Big Game 球赛(DP)
- Dividing(多重背包、单调队列优化dp)