[luogu4056 JSOI2009] 火星藏宝图 (贪心 dp)
Solution
一个显然的贪心:选的点数越多越好。这个随便推推就知道了。
那么我们就贪心的从一列上挑最靠下的转移
直接转移不斜率优化复杂度\(O(nm)\),吸一口O2过了。。。
Code
//By Menteur_Hxy
#pragma GCC optimize(2)
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define Re register
#define Fo(i,a,b) for(Re int i=(a),_=(b);i<=_;i++)
#define Ro(i,a,b) for(Re int i=(b),_=(a);i>=_;i--)
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin)),p1==p2?EOF:*p1++)
using namespace std;
typedef long long LL;
char buf[1<<21],*p1,*p2;
inline int read() {
int x=0,f=1;char c=getchar();
while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();}
while(isdigit(c)) x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x*f;
}
const int MAXN=2e5+5,MAXM=1010,INF=0x3f3f3f3f;
int n,m;
int pos[MAXM],f[MAXM];
struct P{int x,y,v;}p[MAXN];
inline bool cmp(P a,P b) {return a.x==b.x?a.y<b.y:a.x<b.x;}
inline int F(int i,int j) {return f[j]-(p[i].y-j)*(p[i].y-j)-(p[i].x-pos[j])*(p[i].x-pos[j]);}
int main() {
n=read(),m=read();
Fo(i,1,n) p[i].x=read(),p[i].y=read(),p[i].v=read();
sort(p+1,p+1+n,cmp); pos[1]=1; f[1]=p[1].v;
Fo(i,2,n) {
int tmp=-INF;
Fo(j,1,p[i].y) if(pos[j]) tmp=max(tmp,F(i,j));
pos[p[i].y]=p[i].x; f[p[i].y]=tmp+p[i].v;
}
printf("%d",f[m]);
return 0;
}
[luogu4056 JSOI2009] 火星藏宝图 (贪心 dp)的更多相关文章
- bzoj 1560 [JSOI2009]火星藏宝图(DP)
1560: [JSOI2009]火星藏宝图 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 647 Solved: 309[Submit][Status ...
- 【BZOJ1560】[JSOI2009]火星藏宝图(贪心,动态规划)
[BZOJ1560][JSOI2009]火星藏宝图(贪心,动态规划) 题面 BZOJ 洛谷 题解 既然所有的位置的权值都大于\(0\),那么就可以直接贪心,按照行为第一关键字,列为第二关键字,来转移. ...
- bzoj1560:[JSOI2009]火星藏宝图(斜率优化)
题目描述 在火星游玩多日,jyy偶然地发现了一张藏宝图.根据藏宝图上说法,宝藏被埋藏在一个巨大的湖里的N个岛上(2<=N<=200,000).为了方便描述,地图把整个湖划分成M行M列(1& ...
- 【[JSOI2009]火星藏宝图】
这里是\(sb\)的\(O(nm)\)做法 上一篇题解里写的\(O(nm)\)做法并没有看懂,我真是好菜啊 这是一个用了斜率优化,但是复杂度仍然是\(O(nm)\)的做法 我们还是先写出简单的\(dp ...
- bzoj1560: [JSOI2009]火星藏宝图
考虑到一个性质,A到B的距离一定不小于A到C再到B的距离,因为能够到达这三个点不可能构成锐角三角形 对于当前点的更新只需要找那些无法经过其它点再到当前点的点,相当于是一个y坐标单调减的上凸包,随便维护 ...
- 【BZOJ1560】【JSOI2009】火星藏宝图 [DP]
火星藏宝图 Time Limit: 10 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description Input Output Samp ...
- 【BZOJ-3174】拯救小矮人 贪心 + DP
3174: [Tjoi2013]拯救小矮人 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 686 Solved: 357[Submit][Status ...
- BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP
BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀 ...
- 洛谷P4823 拯救小矮人 [TJOI2013] 贪心+dp
正解:贪心+dp 解题报告: 传送门! 我以前好像碰到过这题的说,,,有可能是做过类似的题qwq? 首先考虑这种显然是dp?就f[i][j]:决策到了地i个人,跑了j个的最大高度,不断更新j的上限就得 ...
随机推荐
- git ignore的一些技巧
当想要ignore的部分已经纳入版本控制的时候,可以使用 git rm --cache -rf cache 来强制ignore
- android 6.0编译时出现ERROR:Security problem ,see jack server log【转】
本文转载自:http://blog.csdn.net/a567890k/article/details/52956798 最近编译Android6.0时经常出现以下错误 临时解决方法: Buildin ...
- libnids 中哈希表的建立
//hash.c #include <sys/types.h>#include <sys/time.h>#include <stdio.h>#include < ...
- jQuery EasyUI,LinkButton(按钮)组件
转自:https://www.cnblogs.com/adc8868/p/6639570.html jQuery EasyUI,LinkButton(按钮)组件 学习要点: 1.加载方式 2.属性列表 ...
- bzoj 1718: [Usaco2006 Jan] Redundant Paths 分离的路径【tarjan】
首先来分析一下,这是一张无向图,要求没有两条路联通的点对个数 有两条路连通,无向图,也就是说,问题转化为不在一个点双连通分量里的点对个数 tarjan即可,和求scc还不太一样-- #include& ...
- react hooks 全面转换攻略(二) react本篇剩余 api
useCallback,useMemo 因为这两个 api 的作用是一样的,所以我放在一起讲; 语法: function useMemo<T>(factory: () => T, d ...
- git 详细部署及其应用
第1章 版本控制系统 自动生成备份.随时回滚.知道改动的地方. 1.1 svn和git的区别 1.1.1 svn 集中式的版本控制系统,只有一个中央数据仓库,如果中央数据库仓库挂了或者不可访问,所有的 ...
- 【js】再谈移动端的模态框实现
移动端模态框的机制因为与PC的模态框机制一直有所区别,一直是许多新人很容易踩坑的地方,最近笔者作为一条老咸鱼也踩进了一个新坑中,真是平日里代码读得太粗略,故而写上几笔,以儆效尤. 故事的起因是这样的, ...
- [W3School]JavaScript教程学习
JavaScript 简介 JavaScript 是世界上最流行的编程语言.这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备. JavaScript ...
- STL之set和multiset
set是与集合相关的容器,STL为我们提供了set的实现,在编程题中遇见集合问题直接调用是十分方便 SET set模版类的定义在头文件<set>中. 定义set对象的示例代码如下: set ...