思路:首先可以写出n^3dp的状态转移方程:f[i][j]=max{f[j][k]+val[i]},f[i][j]表示最后一步跳到点从j点跳到i点的最大价值(状态不能设成f[i],因为j对后面的决策是有影响的),然后枚举k转移,但这样在时限内是无法通过的,于是考虑如何优化dp,可以改变一下枚举顺序,也就是一般的都是先枚举i再枚举j,可以先枚举j再枚举i,这样有什么好处呢,那么k就以直接用一个指针从j-1扫到1,因为随着i的不断增加,i与j之间的距离是递增的,那么之前合法的决策现在也一定合法,那么就可以用一个值记录最大的f[j][k],转移即可。然后还要记得正反做两遍。

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 1005 int n,ans;
int f[maxn][maxn]; inline int read(){
int x=0;char ch=getchar();
for (;ch<'0'||ch>'9';ch=getchar());
for (;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
return x;
} struct node{
int x,v;
bool operator <(const node &a)const{return x<a.x;}
}a[maxn]; int main(){
n=read();
for (int i=1;i<=n;i++) a[i].x=read(),a[i].v=read();
sort(a+1,a+n+1);
for (int j=1;j<=n;j++){
int k=j-1,val=f[j][0]+a[j].v;
for (int i=j+1;i<=n;i++){
while (k&&a[i].x-a[j].x>=a[j].x-a[k].x)
val=max(val,f[j][k]+a[j].v),k--;
f[i][j]=max(f[i][j],val);
ans=max(ans,val+a[i].v);
}
}
for (int j=n;j;j--){
int k=j+1,val=f[j][n+1]+a[j].v;
for (int i=j-1;i;i--){
while (k<=n&&a[k].x-a[j].x<=a[j].x-a[i].x)
val=max(val,f[j][k]+a[j].v),k++;
f[i][j]=max(f[i][j],val);
ans=max(ans,val+a[i].v);
}
}
printf("%d\n",ans);
return 0;
}

  

bzoj3315:[Usaco2013 Nov]Pogo-Cow的更多相关文章

  1. BZOJ3315: [Usaco2013 Nov]Pogo-Cow

    3315: [Usaco2013 Nov]Pogo-Cow Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 143  Solved: 79[Submit] ...

  2. Bzoj3315 [Usaco2013 Nov]Pogo-Cow(luogu3089)

    3315: [Usaco2013 Nov]Pogo-Cow Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 352  Solved: 181[Submit ...

  3. bzoj1742[Usaco2005 nov]Grazing on the Run 边跑边吃草*&&bzoj3074[Usaco2013 Mar]The Cow Run*

    bzoj1742[Usaco2005 nov]Grazing on the Run 边跑边吃草 bzoj3074[Usaco2013 Mar]The Cow Run 题意: 数轴上有n棵草,牛初始在L ...

  4. BZOJ3314: [Usaco2013 Nov]Crowded Cows

    3314: [Usaco2013 Nov]Crowded Cows Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 86  Solved: 61[Subm ...

  5. BZOJ 3315: [Usaco2013 Nov]Pogo-Cow( dp )

    我真想吐槽USACO的数据弱..= = O(n^3)都能A....上面一个是O(n²), 一个是O(n^3) O(n^3)做法, 先排序, dp(i, j) = max{ dp(j, p) } + w ...

  6. 3314: [Usaco2013 Nov]Crowded Cows

    3314: [Usaco2013 Nov]Crowded Cows Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 111  Solved: 79[Sub ...

  7. BZOJ1640: [Usaco2007 Nov]Best Cow Line 队列变换

    1640: [Usaco2007 Nov]Best Cow Line 队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 493  Solved: 2 ...

  8. BZOJ 3314: [Usaco2013 Nov]Crowded Cows( 单调队列 )

    从左到右扫一遍, 维护一个单调不递减队列. 然后再从右往左重复一遍然后就可以统计答案了. ------------------------------------------------------- ...

  9. 1640: [Usaco2007 Nov]Best Cow Line 队列变换

    1640: [Usaco2007 Nov]Best Cow Line 队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 543  Solved: 2 ...

随机推荐

  1. HDU 5536 Chip Factory 字典树

    Chip Factory Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

  2. URAL 1780 G - Gray Code 找规律

    G - Gray CodeTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...

  3. libIconv.lib编码库的生成和使用

    iconv是将一种编码格式转换为另一种编码格式的开源库,例如可以把Windows环境下通用的ASCii(中文是GB2312)编码转换为国际通用的Unicode编码 iconv最新版本只支持MingW和 ...

  4. GLSL 基础量定义

    GLSL语法跟C语言非常相似: 1.数据类型: GLSL包含下面几种简单的数据类型 float bool :false or ture int 向量: vec   {2,3,4}     长度为2, ...

  5. MultiCardMenu

    https://github.com/wujingchao/MultiCardMenu MultiCardMenu-master.zip

  6. mysql router 自动failover测试

    mysql router 启动服务文件内容: [root@monitor mysqlrouter]# cat /etc/init.d/mysqlrouter#! /bin/bash## mysqlro ...

  7. Jquery Validate根据其他元素的事件来触发单个元素的异步校验

    场景:在做一个车辆信息管理模块,而车牌是通过车牌颜色和车牌号码来确定唯一性的,录入车牌信息时需对车牌进行唯一性校验.

  8. SQL用法总结

    1.创建数据库语句 create table persons( 'id' INT NOT NULL AUTO_INCREMENT, ) NOT NULL, ) NOT NULL, PRIMARY KE ...

  9. 怎样用通用pe工具箱制作U盘启动盘

    U盘启动盘制作过程,随着网络的普及,电脑已经成为我们日常生活中的重要一环,最近自己重装了下电脑系统,无意中发现一个傻瓜式的U盘装系统方法,就把怎么制作通用pe工具箱u盘启动盘的经验拿出来跟大家分享下. ...

  10. php生成excel或php生成csv

    一.php生成excel 使用phpexcel类文件生成 二.php生成csv <?php$action ="make";if ($action=='make'){ $fp ...