tjut 3607
来源:互联网 发布:网络养鹅游戏靠谱吗 编辑:程序博客网 时间:2024/05/16 08:26
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <algorithm> using namespace std; typedef long long ll; typedef unsigned long long ull; const int inf=0x3f3f3f3f; const ll INF=0x3f3f3f3f3f3f3f3fll; const int maxn=100010; int max1[maxn<<2]; void update(int pos,int val,int le,int ri,int node){ if(le==ri){ max1[node]=val; return ; } int t=(le+ri)>>1; if(pos<=t) update(pos,val,le,t,node<<1); else update(pos,val,t+1,ri,node<<1|1); max1[node]=max(max1[node<<1],max1[node<<1|1]); } int query(int l,int r,int le,int ri,int node){ if(l<=le&&ri<=r) return max1[node]; int t=(le+ri)>>1,ans=-inf; if(l<=t) ans=max(ans,query(l,r,le,t,node<<1)); if(r>t) ans=max(ans,query(l,r,t+1,ri,node<<1|1)); return ans; } int num[maxn],tmp[maxn],val[maxn]; int main(){ int n; while(scanf("%d",&n)!=-1){ for(int i=1;i<=n;i++){ scanf("%d%d",&num[i],&val[i]); tmp[i-1]=num[i]; } int k=1; sort(tmp,tmp+n); for(int i=1;i<n;i++){ if(tmp[i]!=tmp[i-1]) tmp[k++]=tmp[i]; } memset(max1,0,sizeof(max1)); int ans=-inf; for(int i=1;i<=n;i++){ int ttt=lower_bound(tmp,tmp+k,num[i])-tmp+1; int ans1; if(ttt==1) ans1=0; else ans1=query(1,ttt-1,1,k,1); ans=max(ans,ans1+val[i]); update(ttt,ans1+val[i],1,k,1); } printf("%d\n",ans); } return 0; }
0 0
- tjut 3607
- tjut 5289
- tjut 5288
- tjut 5294
- tjut 2586
- tjut 5296
- tjut 5297
- tjut 5299
- tjut 5384
- tjut 5387
- tjut 5386
- tjut 5381
- tjut 5400
- tjut 5399
- tjut 5396
- tjut 5398
- tjut 5412
- tjut 5410
- hdu1003最大连续子段和
- Java不常用技术关键词
- 辛词
- HDU 1503 Advanced Fruits(LCS)
- 基于Docker搭建Hadoop集群(ubuntu操作系统)
- tjut 3607
- docker vs rtk
- PHP中return用法
- i.MX6应用层处理音频数据
- Ext学习系列(8)-- Ext.data.JsonReader
- C#之WinForm基础 添加多个窗体
- tjut 3603
- QFileDialog如何选择多个文件
- linux basic knowledge