链接:https://ac.nowcoder.com/acm/contest/992/B
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

在之前很火的一个动漫《干物妹小埋》中,大家对小埋打游戏喝可乐的印象十分的深刻。

现在欧尼酱将小埋的快乐水全部分开藏在了家具的顶端。

小埋使出空中1080°转身接战术翻滚跳到任一家具上,她相信,只要她翻滚的足够快,欧尼酱就跟不上她。

1.为获取梦幻开局,小埋一套技能可以使她一开始掉落在任一家具上。

2.小埋家的家具按顺序给出,每个家具可跳可不跳,为避开欧尼酱的追击,小埋翻滚到某个家具上面后,只能向前继续翻滚。

3.启动超重力感应系统的小埋不会从较高的家具翻滚到较低的家具上。

4.由于每个家具上的快乐水都有对应的happy值,IQ==250的小埋会选择一条happy值总和最大的路线。

那么,最终小埋将获得的happy值总和是多少呢?

输入描述:

第一行一个整数n(0<n<=200000),表示小埋家的家具数。第二行n个整数,对于每个整数ai, 0<=ai<=10^9,表示第i个家具的高度。第三行n个整数,对于每个整数vi, 0<=vi<=10^9,表示第i个家具上的快乐水的happy值。

输出描述:

一个整数,表示小埋获得的happy值总和。

示例1

输入

复制

6
2 1 1 3 3 4
3 1 1 1 1 1

输出

复制

6

说明

路线:2->3->3->4答案:3+1+1+1

不错不错,补这个题的时候学会了如何用线段树求最长子序列。

普通求最长上升子序列的题:

先说最简单的做法:

一种是最常见的dp方法,令f[i]表示以A[i]元素结尾的LIS长度,那么,F[i]=max{F[j]+1) 其中1<=j<i,A[j]<A[i],边界是初始化F[i]=1,复杂度O(n^2)

那么我们通过线段树维护这个max值就成功的把时间复杂度降下来了。

离散化后枚举h[i]先查询小于他的区间内最大的是多少,然后将这个mx+v[i]插入这个h[i]对应的位置上去,这个有点类似线段树求逆序数的操作。。

AC代码:

#include <bits/stdc++.h>
#define ls id<<1
#define rs id<<1|1
using namespace std;
typedef long long ll;
const int N=2e5+10;
int a[N],b[N],c[N],n,tot;
ll mx[N*4];
int getid(int x){return lower_bound(c+1,c+1+tot,x)-c;
}
ll qu(int id,int l,int r,int ql,int qr){if(ql<=l&&r<=qr) return mx[id];int mid=l+r>>1;ll ans=0;if(ql<=mid) ans=max(ans,qu(ls,l,mid,ql,qr));if(qr>mid )ans=max(ans,qu(rs,mid+1,r,ql,qr));return ans;
}
void up(int id,int l,int r,int pos,ll val){if(l==r) {mx[id]=val;return ;}int mid=l+r>>1;if(pos<=mid) up(ls,l,mid,pos,val);else up(rs,mid+1,r,pos,val);mx[id]=max(mx[ls],mx[rs]);
}
int main()
{cin>>n;for(int i=1;i<=n;++i){scanf("%d",&a[i]);c[i]=a[i];}for(int i=1;i<=n;++i) scanf("%d",&b[i]);sort(c+1,c+1+n);tot=unique(c+1,c+1+n)-c-1;ll ans=0;for(int i=1;i<=n;++i){int id=getid(a[i]);ll mxx=qu(1,1,tot,1,id);mxx+=b[i];ans=max(ans,mxx);up(1,1,tot,id,mxx);}printf("%lld\n",ans);
}

吉首大学2019年程序设计竞赛(重现赛) 干物妹小埋(线段树求最长上升子序列)相关推荐

  1. 吉首大学2019年程序设计竞赛(重现赛)B——干物妹小埋(树状数组+二分)

    链接:https://ac.nowcoder.com/acm/contest/992/B 来源:牛客网 题目描述 在之前很火的一个动漫<干物妹小埋>中,大家对小埋打游戏喝可乐的印象十分的深 ...

  2. 吉首大学2019年程序设计竞赛(重现赛) B 干物妹小埋

    链接:https://ac.nowcoder.com/acm/contest/992/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  3. 干物妹小埋-树状数组-吉首大学2019年程序设计竞赛

    题目链接:https://ac.nowcoder.com/acm/contest/992/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64b ...

  4. 吉首大学校赛B——干物妹小埋(线段树求最大递增子序列)

    链接:https://ac.nowcoder.com/acm/contest/992/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  5. 干物妹小埋 树状数组

    链接:https://ac.nowcoder.com/acm/contest/992/B 来源:牛客网 树状数组 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...

  6. 哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)---E---小乐乐匹配字符串(最长公共子序列)

    链接:https://ac.nowcoder.com/acm/contest/301/E 来源:牛客网 小乐乐有字符串str1,str2. 小乐乐想要给他们找朋友. 小乐乐想知道在这两个字符串中最多能 ...

  7. 吉首大学2019年程序设计竞赛

    Problem A SARS病毒 https://ac.nowcoder.com/acm/contest/992/A 题意: 题解: C++版本一 题解:矩阵快速幂+费马小定理 /* *@Author ...

  8. 吉首大学2019年程序设计竞赛(重现赛) J 滑稽树下你和我 (递归)

    链接:https://ac.nowcoder.com/acm/contest/992/J 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  9. 吉首大学2019年程序设计竞赛-F 天花乱坠

    题目链接:https://ac.nowcoder.com/acm/contest/992/F 题意:给定正n边形,边长为100,以每条边的中点连线构成新的正n边形,无限循环下去,求所有边的长度和. 思 ...

最新文章

  1. python脚本编写_【PyQGIS】编写用于处理框架(QGIS3)的Python脚本
  2. 《HFSS电磁仿真设计从入门到精通》一第2章 入门实例——T形波导的内场分析和优化设计...
  3. 【OO学习】OO第四单元作业总结及OO课程总结
  4. ios 如何在cell中去掉_经典问题:代码中如何去掉烦人的“!=nullquot;判空语句
  5. 新闻与传播c刊_新闻传播类c刊有哪些
  6. linux cp源码_为Linux的cp和mv命令添加进度条
  7. Android之让代码跑在主线程(无context上下文)的封装
  8. 322. 零钱兑换 golang 动态规划
  9. 02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架
  10. [Hash应用问题] 例3.2 给出n个整数,按从大到小的顺序输出前m大的数
  11. 国内首例:飞步无人卡车携手中国邮政、德邦投入日常运营
  12. 大文件如何传输到服务器,大文件如何快速传输到云服务器
  13. 通过BeanDefinitionReader获取BeanDefinition的三种不同方式
  14. 【图】max51开发板(手工焊接)
  15. hao123首页源码 html,html css应用高仿hao123网站
  16. 《Python Excel 教程》
  17. python提取一行_如何从numpy数组中提取任意一行值?
  18. c与c++的struct区别
  19. 安卓学习之持久化技术(数据库操作)
  20. RISC-V架构的开源处理器分析

热门文章

  1. Python 快速入门学习总结
  2. py文件编译为pyc
  3. [新奇周边] 内置2400mAh电量 可以充电的手机壳上市【转载:今日头条】
  4. 德国短期(小于90天)学术访问签证经验申根签证
  5. 利用万用表查找漏电原因
  6. 八段锦:让 IT 人士受益一生的运动救生圈
  7. 关于Google智能眼镜的设计
  8. jmeter 正则表达式学习--使用详解
  9. 解读SM, SP和Warp
  10. java入门编程(一)