#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstring>
#include<map>
#include<set>
#include<queue>
#include<bitset>
#include<utility>
#include<functional>
#include<iomanip>
#include<sstream>
#include<ctime>
#include<cassert>
#define A first
#define B second
#define mp make_pair
#define pb push_back
#define pw(x) (1ll << (x))
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(),(x).end()
#define rep(i,l,r) for(int i=(l);i<(r);i++)
#define per(i,r,l) for(int i=(r);i>=(l);i--)
#define FOR(i,l,r) for(int i=(l);i<=(r);i++)
#define eps 1e-9
#define PIE acos(-1)
#define cl(a,b) memset(a,b,sizeof(a))
#define fastio ios::sync_with_stdio(false);cin.tie(0);
#define lson l , mid , ls
#define rson mid + 1 , r , rs
#define ls (rt<<1)
#define rs (ls|1)
#define INF 0x3f3f3f3f
#define lowbit(x) (x&(-x))
#define sqr(a) a*a
#define ll long long
#define ull unsigned long long
#define vi vector<int>
#define pii pair<int, int>
#define dd(x) cout << #x << " = " << (x) << ", "
#define de(x) cout << #x << " = " << (x) << "\n"
#define endl "\n"
using namespace std;
#define pll pair<ll,ll>
const int maxn=1e5+;
ll n,d[maxn<<];
ll tot;
vector<int>v;
//**********************************
struct Node{
ll x,y,v;
bool operator<(const Node& rhs){
if(x!=rhs.x)return x<rhs.x;
return y>rhs.y;
}
}node[maxn];
void update(ll x,ll val)
{
while(x<=sz(v)){
d[x]=max(d[x],val);
x+=lowbit(x);
}
}
ll query(int x)
{
ll ans=;
while(x){
ans=max(ans,d[x]);
x-=lowbit(x);
}
return ans;
}
inline int getid(int x){return lower_bound(all(v),x)-v.begin()+;}
//**********************************
map<pll,ll>Mp;
//**********************************
int main()
{
fastio;
cin>>n;
map<pll,ll>::iterator it;
rep(i,,n){
cin>>node[i].x>>node[i].y>>node[i].v,v.pb(node[i].y);
pii PII=mp(node[i].x,node[i].y);
it=Mp.find(PII);
if(it!=Mp.end())node[i].v+=Mp[PII],Mp.erase(PII);
Mp.insert(mp(PII,node[i].v));
}
sort(all(v));v.erase(unique(all(v)),v.end());
rep(i,,n)node[i].y=getid(node[i].y);
ll tot=;
sort(node,node+n);
ll ans=;
rep(i,,n){
ll tmp;
tmp=query(node[i].y-)+node[i].v;
ans=max(ans,tmp);
update(node[i].y,tmp);
}
cout<<ans<<endl;
return ;
}

最新文章

  1. 贪吃蛇的java代码分析(二)
  2. polyfill之javascript函数的兼容写法——Array篇
  3. Hibernate自动创建表
  4. 按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。 创建第
  5. [双连通分量] POJ 3694 Network
  6. 搜狗输入法弹出搜狐新闻的解决办法(sohunews.exe)
  7. UVa 11246 - K-Multiple Free set
  8. openstack创建实例测试步骤
  9. 类似java.lang.NoClassDefFoundError: org/jaxen/JaxenException解决方法
  10. shell网络客户端
  11. bzoj 1076: [SCOI2008]奖励关
  12. JAVA应用程序转换为Applet
  13. 算法工程师&lt;机器学习基础&gt;
  14. linux中mariadb的安装
  15. 修改docker image存放位置
  16. Python中pass的用法、作用
  17. node的经典事件监听
  18. Unity3D 重写下拉菜单/Dropdown组件、开启每个按钮可用
  19. JAVA Socket编程和C++ Socket编程有什么不同
  20. 如何使用HttpClient认证机制

热门文章

  1. vue中非父子组件的传值bus的使用
  2. 开源跨境ERP - 小老板 Docker/Docker Compose一键部署
  3. Flutter 37: 图解 Flutter 基本动画 (一)
  4. Hadoop Shell 操作
  5. Django项目实战—用户头像上传
  6. storm入门基本知识
  7. JDK的收费问题
  8. 解决安卓app在真机上的无法登录问题
  9. 【洛谷P2480】古代猪文
  10. Codeforces Round #590 (Div. 3) A. Equalize Prices Again