DP【洛谷P3089】 [USACO13NOV]POGO的牛Pogo-Cow
【洛谷P3089】 [USACO13NOV]POGO的牛Pogo-Cow
FJ给奶牛贝西的脚安装上了弹簧,使它可以在农场里快速地跳跃,但是它还没有学会如何降低速度。
FJ觉得让贝西在一条直线的一维线路上进行练习,他在不同的目标点放置了N (1 <= N <= 1000)个目标点,目标点i在目标点x(i),该点得分为p(i)。贝西开始时可以选择站在一个目标点上,只允许朝一个方向跳跃,从一目标点跳到另外一个目标点,每次跳跃的距离至少和上一次跳跃的距离相等,并且必须跳到一个目标点。
每跳到一个目标点,贝西可以拿到该点的得分,请计算他的最大可能得分。
设\(f(i)(j)\)表示第i个点从j转移过来的最优解,朴素\(n^3\)。
正反来两边,特判k=0;
正解单调队列优化,可是我不会。
洛谷上\(n^3\)水过。
我菜我菜。
code:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define int long long
using namespace std;
const int wx=2017;
inline int read(){
int sum=0,f=1; char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
while(ch>='0'&&ch<='9'){sum=(sum<<1)+(sum<<3)+ch-'0'; ch=getchar();}
return sum*f;
}
struct node{
int x,p;
friend bool operator < (const node & a,const node & b){
return a.x<b.x;
}
}t[wx];
int f[wx][wx];
int n,ans;
signed main(){
n=read();
for(int i=1;i<=n;i++)t[i].x=read(),t[i].p=read();
sort(t+1,t+1+n);
for(int i=1;i<=n;i++)f[i][0]=t[i].p;
for(int i=1;i<=n;i++){
for(int j=1;j<i;j++){
for(int k=0;k<j;k++){
if(k&&t[j].x-t[k].x<=t[i].x-t[j].x)f[i][j]=max(f[i][j],f[j][k]+t[i].p);
else if(!k)f[i][j]=max(f[i][j],f[j][k]+t[i].p);
}
ans=max(ans,f[i][j]);
}
}
memset(f,0,sizeof f);
for(int i=1;i<=n;i++)t[i].x=t[n].x-t[i].x+1;
sort(t+1,t+1+n);
for(int i=1;i<=n;i++)f[i][0]=t[i].p;
for(int i=1;i<=n;i++){
for(int j=1;j<i;j++){
for(int k=0;k<j;k++){
if(k&&t[j].x-t[k].x<=t[i].x-t[j].x)f[i][j]=max(f[i][j],f[j][k]+t[i].p);
else if(!k)f[i][j]=max(f[i][j],f[j][k]+t[i].p);
}
ans=max(ans,f[i][j]);
}
}
printf("%lld\n",ans);
return 0;
}
/*
6
5 6
1 1
10 5
7 6
4 8
8 10
*/
DP【洛谷P3089】 [USACO13NOV]POGO的牛Pogo-Cow的更多相关文章
- 【洛谷】2990:[USACO10OPEN]牛跳房子Cow Hopscotch【单调队列优化DP】
P2990 [USACO10OPEN]牛跳房子Cow Hopscotch 题目描述 The cows have reverted to their childhood and are playing ...
- HAOI2006 (洛谷P2341)受欢迎的牛 题解
HAOI2006 (洛谷P2341)受欢迎的牛 题解 题目描述 友情链接原题 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之 ...
- 树形DP 洛谷P2014 选课
洛谷P2014 选课 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门 ...
- 题解【洛谷P3662】[USACO17FEB]Why Did the Cow Cross the Road II S
本题是练习前缀和的好题!我们可以枚举前端点,确定一个长度为k的区间,然后利用前缀和统计区间内损坏的灯的数量,最后取最小值即可.AC代码: #include <bits/stdc++.h> ...
- 洛谷 3089 [USACO13NOV]POGO的牛Pogo-Cow
单调队列优化dp; 对于每个点开个单调队列,按转移到它的点到它的距离从大到小,得分也从大到小排列. 每次枚举当前点前面的所有点,对于每个点的队列中二分一个距离小于等于它到当前点的答案值,放到当前点的队 ...
- 洛谷 P3047 [USACO12FEB]附近的牛Nearby Cows
P3047 [USACO12FEB]附近的牛Nearby Cows 题目描述 Farmer John has noticed that his cows often move between near ...
- 洛谷 P3088 [USACO13NOV]挤奶牛Crowded Cows 题解
P3088 [USACO13NOV]挤奶牛Crowded Cows 题目描述 Farmer John's N cows (1 <= N <= 50,000) are grazing alo ...
- 区间DP 洛谷P2858牛奶零食
题目链接 题意:你有n个货物从1-n依次排列,每天可以从两侧选一个出来卖,卖的价格是当天的天数乘该货物的初始价格,问这批货物卖完的最大价格 输入:第一行n,之后是n个货物的初始价值 这道题不能用贪心做 ...
- P1279 字串距离 dp 洛谷
题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X ...
随机推荐
- The Commercial Open-Source Monitoring Landscape
As enterprises have adopted open-source monitoring tools, there is growing market demand by enterpri ...
- [Python]python CGI脚本在apache服务器上运行时出现“Premature end of script headers”错误
在测试自己的python CGI脚本时, 当html网页中的表单form内容传送到服务器python脚本时, 总是出现Premature end of script headers错误, 网页显示是服 ...
- 第十章 Executor框架
在Java中,使用线程来异步执行任务.Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源.同时,为每一个任务创建一个新线程来执行 ...
- 11-04 SQLserver基础--连接查询、联合查询、索引
一.子查询补充: Exists的用法: select*from haha where exists(select*from bumen where bumen.code=haha.bumen,and ...
- ABP模块配置
介绍 我们知道ABP中模块的配置都是通过模块的Configuration属性来设置的.例如在模块的生命周期方法中可以进行一系列的配置 审计 MQ Redis....也可以替换一些ABP默认配置 通常我 ...
- 安装zabbix-agent报错 Error: failure: repodata/primary.xml.gz from zabbix: [Errno 256] No more mirrors to try.
安装zabbix-agent报错 yum install -y zabbix-agent Loaded plugins: fastestmirror, refresh-packagekit, secu ...
- NSThread 基本使用
一.简介 (1)使用NSThread对象建立一个线程非常方便 (2)但是!要使用NSThread管理多个线程非常困难,不推荐使用 (3)技巧!使用[NSThreadcurrentThread]跟踪任务 ...
- myeclipse 10破解
因为笔者的电脑是刚买不久,忘记先给电脑分区,等软年安装差不多了才发现忘记分区,所以就备份了数据,然后分区,结果分区过程中没有异常发生,就没用备用数据,就用分过区的原数据,当时还以为没问题,结果打开my ...
- C语言学习笔记--动态库和静态库的使用
1.C语言中的链接器 (1)每个 C 语言源文件被编译后生成目标文件,这些目标文件最终要被链接在一起生成可执行文件. (2)链接器的主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正 ...
- App.CSharp.Grid的ICells接口
using System;using System.Collections.Generic;using System.Text;using System.Drawing;using System.Wi ...