链接: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值总和是多少呢?

输入描述:

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

输出描述:

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

输入

复制

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

输出

复制

  1. 6

说明

  1. 路线:2->3->3->4
  2.  
  3. 答案:3+1+1+1
  4.  
  5. 解题思路:将a值从小到大排序,如果a值相同把编号小的放前面,然后用线段树维护happy值总和的最大值,每次查找比小于当前编号的最大happy值,如果加上当前happy大于答案,则对答案进行更新。然后在将该happy值更新到线段树中。
    代码:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int maxn=;
  5. int n;
  6. struct node{
  7. int id;
  8. ll a,v;
  9. }p[maxn];
  10. bool cmp(node x,node y){
  11. if(x.a==y.a) return x.id<y.id;
  12. return x.a<y.a;
  13. }
  14. ll tree[maxn*];
  15. void pushup(int rt){
  16. tree[rt]=max(tree[rt<<],tree[rt<<|]);
  17. }
  18. void update(int pos,ll val,int l,int r,int rt){
  19. if(l==r){
  20. tree[rt]+=val;
  21. return;
  22. }
  23. int mid=l+r>>;
  24. if(mid>=pos) update(pos,val,l,mid,rt<<);
  25. if(mid<pos) update(pos,val,mid+,r,rt<<|);
  26. pushup(rt);
  27. }
  28. ll ask(int L,int R,int l,int r,int rt){
  29. if(L<=l&&R>=r) return tree[rt];
  30. ll ans=;
  31. int mid=l+r>>;
  32. if(mid>=L) ans=max(ans,ask(L,R,l,mid,rt<<));
  33. if(mid<R) ans=max(ans,ask(L,R,mid+,r,rt<<|));
  34. return ans;
  35. }
  36. int main(){
  37. scanf("%d",&n);
  38. for(int i=;i<=n;i++) scanf("%lld",&p[i].a);
  39. for(int i=;i<=n;i++) {
  40. scanf("%lld",&p[i].v);
  41. p[i].id=i;
  42. }
  43. sort(p+,p++n,cmp);
  44. ll ans=;
  45. for(int i=;i<=n;i++){
  46. ll Max=ask(,p[i].id,,n,); //询问比当前编号小的happy总和最大值
  47. ans=max(ans,Max+p[i].v); //更新答案
  48. update(p[i].id,Max+p[i].v,,n,); //将该happy更新到区间中
  49. }
  50. cout<<ans<<endl;
  51. return ;
  52. }

吉首大学2019年程序设计竞赛(重现赛) B 干物妹小埋的更多相关文章

  1. 吉首大学2019年程序设计竞赛(重现赛)D - 数列求和(嘤雄难度)

    链接:https://ac.nowcoder.com/acm/contest/992/D $a_{i}=\dfrac {3a_{i-1}-a_{i-2}}{2}+i+1$ 移项再化一下 $a_{i}- ...

  2. 吉首大学2019年程序设计竞赛(重现赛)- A SARS病毒 (矩阵,欧拉降幂)

    题目链接:https://ac.nowcoder.com/acm/contest/992/A 题意:求出长度为n的字符串个数,字符串由A.C.G.T组成,其中A和C必须成对出现. 思路:我们规定:   ...

  3. 吉首大学2019年程序设计竞赛(重现赛)-K(线段树)

    题目链接:https://ac.nowcoder.com/acm/contest/992/K 题意:给一个大小为1e5的数组,由0 1组成,有两种操作,包括区间修改,将一段区间内的0换成1,1换成0; ...

  4. 吉首大学2019年程序设计竞赛(重现赛)-J(树形DP)

    题目链接:https://ac.nowcoder.com/acm/contest/992/J 题意:题意很清晰,就是求任意两点距离的和,结果对1e9+7取模. 思路:裸的树形DP题,一条边的贡献值=这 ...

  5. 吉首大学2019年程序设计竞赛(重现赛)I 滑稽树上滑稽果 (莫队+逆元打表)

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

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

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

  7. 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛 G - 彩虹岛套娃

    题目描述 俄罗斯套娃是俄罗斯特产的木制玩具,一般由多个一样图案的空心木娃娃一个套一个组成,最多可达十多个,通常为圆柱形,底部平坦可以直立.颜色有红色,蓝色,绿色,紫色等.最普通的图案是一个穿着俄罗斯民 ...

  8. 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛 H - 圣诞节糖果

    题目描述 圣诞节临近,彩虹岛的黑心商人

  9. 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛 F - 打铁的箱子

    题目描述 作为彩虹岛上最擅长打铁的人,

随机推荐

  1. [洛谷P1095]NOIP2007 普及组T3 守望者的逃离

    问题描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会 ...

  2. python其他篇(1)

    1.跳过anaconda直接打开spyder或qtconsole: 打开终端,输入spyder或者jupyter-qtconsole 2.conda安装jpype1和pyhanlp: 参考:http: ...

  3. PL/SQL 条件控制

    ------ PL/SQL 条件控制 IF-THEN语句 DECLARE a ) :; BEGIN a:; -- check the boolean condition using if statem ...

  4. 晋江年下文爬取【xpath】

    ''' @Modify Time @Author 目标:晋江年下文 爬取6页 ------------ ------- http://www.jjwxc.net/search.php?kw=%C4%E ...

  5. form表单action带参数传递

    form表单action带参数传递function submit(){  var u = document.forms[0].elements["user"].value;  do ...

  6. 定义一个JobService,开启本地服务和远程服务

    @SuppressWarnings(value = ["unchecked", "deprecation"])@RequiresApi(Build.VERSIO ...

  7. sqlalchemy.exc.NoForeignKeysError:Can't find any foreign key relationships between

    这句话的意思是,两张表之间的外键找不到,首先看看外键设置正确了没,如果外键没问题,看看是不是_tablename_设置了没,就是再model中,定义类的时候,表格名称要_tablename_设置一下, ...

  8. Packet Tracer基本使用

    Cisco Packet Tracer基本使用 1:添加设备:路由器选择1841,交换机选择2960二层交换机,添加PC.服务器Server(End Devices) 2:添加连接:这里指以太网连接, ...

  9. 数据可视化-D3js-展示古地理图和古地理坐标反算^_^gplates古地理坐标反算接口

    在线演示 <!DOCTYPE html> <html> <head> <link type="image/png" rel="i ...

  10. MongoDB分片配置 优化 不错

    简单注解:mongos 路由进程, 应用程序接入mongos再查询到具体分片,监听端口默认27017config server 路由表服务, 每一台都具有全部chunk的路由信息 shard为数据存储 ...