首页 > 其他分享 >#2513. Day4-宝藏

#2513. Day4-宝藏

时间:2022-10-12 20:56:45浏览次数:49  
标签:int Day4 edge 宝藏 cmp LL 2513

描述
平面上有 N 处宝藏,第 ii 处位于点 (Xi,Yi) ,价值 Vi
你从点 (1,1)出发,只能向右或向上走(横纵坐标增加)

当你走到一处宝藏,你就会获得它,求最大的总收益(所获得的宝藏价值和)。

注意,可能有宝藏位于同一点,到达该点时获得位于该点的所有宝藏,不能放弃获得宝藏。

输入
第一行一个正整数,为宝藏个数
接下来 N 行,每行三个正整数,Xi,Yi,Vi
输出
一行一个数,为最大的价值和

样例
input

3
1 1 2
1 3 5
2 1 7
output

9
范围
50% N≤1000
90% N≤1e5
100% N≤1e6, 1≤ 输入中所有数 ≤1e8
限制
1s 128M

根据题目,我们只能向右向上走,显然我们的路径要满足任意 xj<=xi,yj<=yi (i<j),发现满足单调递增,所以我们可以用类似最长上升子序列的思路来考虑,首先我们将横坐标排序,那我们就不用再考虑它了,对于纵坐标,我们只关心它们的相对大小,所以可以进行离散化。
定义fi表示以i结尾的最长上升子序列,fi由前边满足单调条件的最大f转移而来,那,我们可以使用树状数组维护这个最大值,具体而言,我们需要以纵坐标位值域,维护f的最大值,每次转移之后,将现在的点加入即可。

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
typedef long long LL;
LL n;
struct edge
{
	LL x,y;
	LL z;
}s[N];
bool cmp(edge a,edge b)
{
	if(a.x==b.x) return a.y<b.y;
	return a.x<b.x;
}
LL b[N];
LL h[N];
LL lowbit(int x){return x&(-x);}


void updata(int x,int y)
{
	LL lx, i;
	while (x <= n)
	{
		h[x] = y;
		lx = lowbit(x);
		for (i=1; i<lx; i<<=1)
			h[x] = max(h[x], h[x-i]);
		x += lowbit(x);
	}	
}
LL query(LL x)
{
	LL ans = 0;
	for (;x;x-= lowbit(x)) ans = max(h[x], ans);
	return ans;
}
int main(){
	
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>s[i].x>>s[i].y>>s[i].z;
	}
	sort(s+1,s+1+n,cmp);
	
	for(int i=1;i<=n;i++) b[i]=s[i].y;
	sort(b+1,b+1+n);
	for(int i=1;i<=n;i++) s[i].y=lower_bound(b+1,b+1+n,s[i].y)-b;
	
	LL ans=0;
	for(int i=1;i<=n;i++)
	{
		LL t = 0;
		t = 1LL*query(s[i].y) +s[i].z;
		updata(s[i].y,t);
		ans = max(ans,t);
	}
	printf("%lld",ans);
	
	return 0;
}

标签:int,Day4,edge,宝藏,cmp,LL,2513
From: https://www.cnblogs.com/mrkou/p/16785906.html

相关文章

  • 前端Vue2-Day47
    事件处理:使用v-on:事件名或@事件名绑定事件。1.事件的回调需要配置在methods对象内,最终在vm上。2.methods中的配置函数,this指向为组件实例对象或vm。不使用箭头函数,......
  • 前端Vue2-Day46
    Vue的特点:1.采用组件化模式,提高代码复用率,使代码易于维护。2.声明式编码,编码人员无需直接操作DOM,提高开发效率。3.使用虚拟DOM和diff算法,尽量复用DOM节点。Vue.config......
  • 尚硅谷-JavaWeb Day4 XML
    1.XML可拓展的标记性语言2.XML的作用:用来保存数据,而且这些数据具有自我描述性;可以作为项目或者模块的配置文件;可以作为网络传输数据的格式(现在使用json);3.XML......
  • 前端Axios-Day45
    Axios源码分析:①模拟Axios对象的创建过程:   1.Axios构造函数本身应具有defaults(默认配置参数)和intercepters(拦截器参数)2.在Axios原型上添加request、get、p......
  • 前端Axios-Day44
    JSONServer:模拟服务器环境插件1.进行全局安装:npmi-gjson-server2.创建db.json文件并写入相关数据:{"posts":[{"id":1,"title":"json-server","author......
  • Linux命令系列之top——里面藏着很多鲜为人知的宝藏知识
    简介top命令是我们经常用来查看系统信息的一个指令,它提供了一个动态的而且是实时的借口帮助我们去查看系统执行时的进程、线程和系统参数的信息。top命令输出内容详细剖析首......
  • 前端模块化-Day43
    前端模块化:发展史:①全局函数模式:将不同的函数功能封装成不同的全局函数。(调用时会导致修改覆盖)//全局函数模式:将不同的功能封装成不同的全局函数letmsg='modul......
  • 前端Promise-Day42
    async函数:函数的返回值为promise对象,promise对象的状态由async函数执行的返回值决定。(与then方法的返回结果规则一致)asyncfunctionmain(){//如......
  • 前端Promise-Day41
    Promise的API:Promise构造函数:Promise(executor{})executor函数:执行器(resolve,reject)=>{}resolve函数:内部定义成功时执行的函数reject函数:内部定义失败时执行的函数e......
  • 22 暑期 CD 班联考 Day4 之降低力度
    WZY在线捐献瞳孔沙城之巅城市定向SUNZH在线学猫叫新知之神SSHWY在线送温暖......