思路:

先找到每i头奶牛能在的位置 (一段区间) 记为L[i]和R[i]

f[j]表示在位置j取到的最小值 每回在范围内更新一哈

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,d,L,a[100500],f[100500],l[100500],r[100500];
int main(){
scanf("%d%d",&n,&L);
d=L/(n-1);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
l[i]=max(i*d,L-(n-i-1)*(d+1));
r[i]=min((i+1)*(d+1),L-(n-i-1)*d);
}
memset(f,0x3f,sizeof(f));
f[0]=a[0];
for(int i=1;i<n;i++){
for(int j=r[i];j>=l[i];j--){
int temp=0x3ffffff;
if(j-d>=l[i-1]&&j-d<=r[i-1])temp=f[j-d];
if(j-d-1>=l[i-1]&&j-d-1<=r[i-1])temp=min(temp,f[j-d-1]);
f[j]=temp+abs(j-a[i]);
}
}
printf("%d\n",f[L]);
}

POJ 3184 DP+剪枝的更多相关文章

  1. DP 剪枝

    DP其实也是和搜索一样可以有剪枝的,昨晚看到一个超级好的DP剪枝题:(HDU - 5009) N段东东,要染色,每次给一个区间染色需要的花费为  该区间颜色总数的平方.  每一段只能被染一次色.求 最 ...

  2. [POJ3612] Telephone Wire(暴力dp+剪枝)

    [POJ3612] Telephone Wire(暴力dp+剪枝) 题面 有N根电线杆,初始高度为h[i],要给相邻的两根连线.可以选择拔高其中一部分电线杆,把一根电线杆拔高\(\Delta H\)的 ...

  3. hdu 1513 && 1159 poj Palindrome (dp, 滚动数组, LCS)

    题目 以前做过的一道题, 今天又加了一种方法 整理了一下..... 题意:给出一个字符串,问要将这个字符串变成回文串要添加最少几个字符. 方法一: 将该字符串与其反转求一次LCS,然后所求就是n减去 ...

  4. poj 1080 dp如同LCS问题

    题目链接:http://poj.org/problem?id=1080 #include<cstdio> #include<cstring> #include<algor ...

  5. poj 1609 dp

    题目链接:http://poj.org/problem?id=1609 #include <cstdio> #include <cstring> #include <io ...

  6. cf298F:状压dp+剪枝

    div2的F题,只想到了一个复杂度略高的dp,T了几次,后来加了剪枝减掉一些无用的状态终于过了.. 题意: 一个n*m的矩阵 (n<=5,m<=20),对格子进行黑白染色,已经给出了每行每 ...

  7. POJ 1037 DP

    题目链接: http://poj.org/problem?id=1037 分析: 很有分量的一道DP题!!! (参考于:http://blog.csdn.net/sj13051180/article/ ...

  8. Jury Compromise POJ - 1015 dp (标答有误)背包思想

    题意:从 n个人里面找到m个人  每个人有两个值  d   p     满足在abs(sum(d)-sum(p)) 最小的前提下sum(d)+sum(p)最大 思路:dp[i][j]  i个人中  和 ...

  9. poj 1088(DP+递归)

    这题状态方程很容易得到:DP[i][j] = max(DP[i-1][j],DP[i+1][j],DP[i][j-1],DP[i][j+1]) + 1 难点在于边界条件和剪枝,因为这方程的条件是点在m ...

随机推荐

  1. 重载和const形参

    1.int lookup(string p); 2.int lookup(const string p);//同1 3.int lookup(string *);//传入一个指针,指针指向string ...

  2. Myeclipse学习总结(8)——Eclipse实用操作

    工欲善其事,必先利其器.对于程序员来说,Eclipse便是其中的一个"器".本文会从Eclipse快捷键和实用技巧这两个篇章展开介绍.Eclipse快捷键用熟后,不用鼠标,便可进行 ...

  3. hadoop-02-关闭防火墙

    hadoop-02-关闭防火墙 su root service iptables status #查看状态 即时关闭: service iptables stop #关闭 重启之后关闭: chkcon ...

  4. [Transducer] Make an Into Helper to Remove Boilerplate and Simplify our Transduce API

    Our transduce function is powerful but requires a lot of boilerplate. It would be nice if we had a w ...

  5. ios xcode真机调试获取屏幕截屏

    非常多时候我们须要在调试的过程中把手机屏幕截图发给其它人看,在android开发中我们能够非常方便的截图保存.而xcode开发ios的时候发现这个需求却如此困难.网上大部分都是介绍的以下这个方案.可是 ...

  6. Node.js 博客实例(十)pv统计和留言统计

    原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第十章,因为版本号等的原因,在原教程基础上稍加修改就可以实现. post.js中将var post={ ...

  7. spring cloud集成 consul源码分析

    1.简介 1.1 Consul is a tool for service discovery and configuration. Consul is distributed, highly ava ...

  8. 版本控制器:SVN(精讲)

    版本控制器:SVN 1 开发中的实际问题 1.1 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流——需求之一:备份! 1.2 这个项目 ...

  9. Bootstrap-FileInput组件的简单Demo

    官网: https://github.com/kartik-v/bootstrap-fileinput/ http://plugins.krajee.com/file-input   HTML页面: ...

  10. 976 B. Lara Croft and the New Game

    You might have heard about the next game in Lara Croft series coming out this year. You also might h ...